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 7f78d71..a4db845 100644 Binary files a/tests/__pycache__/run_tests.cpython-313.pyc and b/tests/__pycache__/run_tests.cpython-313.pyc differ diff --git a/tests/run_tests.py b/tests/run_tests.py index 028629d..bc669c6 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -3,6 +3,7 @@ from __future__ import annotations import argparse import datetime as dt +import subprocess import sys from pathlib import Path @@ -20,7 +21,7 @@ from tests.harness.test_runner import TestRunner def parse_args() -> 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)