From af3de3066b806acb0a032bdf5aed3764c2de2e0c Mon Sep 17 00:00:00 2001 From: Didactyl User Date: Wed, 25 Mar 2026 09:35:46 -0400 Subject: [PATCH] v0.2.19 - Default test harness execution to build_static debug binary and add skip-build override flag --- README.md | 4 +-- src/main.h | 4 +-- tests/__pycache__/run_tests.cpython-313.pyc | Bin 5816 -> 7658 bytes tests/run_tests.py | 37 ++++++++++++++++++-- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e474a0f..9de9e60 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,11 @@ Skills compose by adoption-list order (`10123`) and trigger tags carry runtime e Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers. -## Current Status — v0.2.18 +## Current Status — v0.2.19 **Active build — this project is barely working. Experiment at your own risk.** -> Last release update: v0.2.18 — Add Python test harness and harden increment/push script for git identity and SSH remote handling +> Last release update: v0.2.19 — Default test harness execution to build_static debug binary and add skip-build override flag - Connects to configured relays with auto-reconnect and relay state transition logging - Publishes configured startup events per relay as each relay becomes connected diff --git a/src/main.h b/src/main.h index 2071264..8c0a89f 100644 --- a/src/main.h +++ b/src/main.h @@ -12,8 +12,8 @@ // Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros #define DIDACTYL_VERSION_MAJOR 0 #define DIDACTYL_VERSION_MINOR 2 -#define DIDACTYL_VERSION_PATCH 18 -#define DIDACTYL_VERSION "v0.2.18" +#define DIDACTYL_VERSION_PATCH 19 +#define DIDACTYL_VERSION "v0.2.19" // Agent metadata #define DIDACTYL_NAME "Didactyl" diff --git a/tests/__pycache__/run_tests.cpython-313.pyc b/tests/__pycache__/run_tests.cpython-313.pyc index 7f78d7124c913abc829b2ed95e3c264c9fd9b842..a4db8454103cfb65a9721e6e63fec01cf732c884 100644 GIT binary patch delta 3515 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 argparse.Namespace: parser = argparse.ArgumentParser(description="Didactyl automated test harness") parser.add_argument("--config", default="tests/configs/test_genesis.jsonc") - parser.add_argument("--binary", default="./didactyl") + parser.add_argument("--binary", default=None, help="Path to didactyl binary; if omitted, build_static --debug is used") parser.add_argument("--suite", action="append", help="Run only this suite (repeatable)") parser.add_argument("--test", action="append", help="Run only this test name (repeatable)") parser.add_argument("--api-port", type=int, default=8485) @@ -30,9 +31,33 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--output-dir", default=None) parser.add_argument("--verbose", action="store_true") parser.add_argument("--no-restart", action="store_true") + parser.add_argument( + "--skip-build-static-debug", + action="store_true", + help="Do not invoke ./build_static.sh --debug before running", + ) return parser.parse_args() +def build_static_debug_binary() -> None: + cmd = ["./build_static.sh", "--debug"] + print("Building debug static binary via ./build_static.sh --debug ...") + subprocess.run(cmd, check=True) + + +def resolve_default_debug_binary() -> Path: + candidates = [ + Path("./didactyl_static_x86_64_debug"), + Path("./didactyl_static_arm64_debug"), + Path("./didactyl_static_armv7_debug"), + Path("./didactyl_static_armv6_debug"), + ] + existing = [p for p in candidates if p.exists() and p.is_file()] + if existing: + return existing[0] + return Path("./didactyl_static_x86_64_debug") + + def main() -> int: args = parse_args() @@ -40,9 +65,17 @@ def main() -> int: output_dir = args.output_dir or f"tests/results/{run_ts}" Path(output_dir).mkdir(parents=True, exist_ok=True) - binary = Path(args.binary) + if not args.skip_build_static_debug: + try: + build_static_debug_binary() + except subprocess.CalledProcessError as exc: + print(f"build_static debug build failed with exit code {exc.returncode}") + return 2 + + binary = Path(args.binary) if args.binary else resolve_default_debug_binary() if not binary.exists(): print(f"didactyl binary not found: {binary}") + print("Pass --binary or run ./build_static.sh --debug") return 2 config = Path(args.config)