From ff4cc170ead00df792ebd8d6417ab52ebbb78d9b Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Thu, 6 Aug 2026 00:33:34 +0200 Subject: [PATCH] fix(tests): resolve the prod binary from CBM_TEST_BINARY, not a hardcoded build/c The Linux legs of the local 3-OS ladder build into build/linux-arm64 / build/linux-amd64, not build/c, so Step 5c died with 'missing binary: /src/build/c/codebase-memory-mcp' and took the whole leg down. Steps 5 and 5b already pass CBM_TEST_BINARY (derived from $BUILD_DIR) to their scripts; 5c did not, and its test hardcoded the path. CI never caught this because every CI leg uses the default BUILD_DIR of build/c - the container legs are the only ones that differ, which is precisely what the local ladder is for. - test_worker_error_response.sh honours ${CBM_TEST_BINARY:-build/c/...} like its sibling watchdog tests; the default keeps bare manual runs working - scripts/test.sh passes CBM_TEST_BINARY to Step 5c, matching 5 and 5b - test_hook_conflict_notice.sh carried the identical hardcoding and is fixed the same way (local-only today, but wrong is wrong) Verified: with the fix the test passes against an out-of-tree binary; reverting the fix reproduces the ladder's exact failure (rc=2, 'missing binary: /build/c/codebase-memory-mcp'). Signed-off-by: Martin Vogel --- scripts/test.sh | 2 +- tests/test_hook_conflict_notice.sh | 2 +- tests/test_worker_error_response.sh | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 462ab4df9..6f00b8706 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -280,7 +280,7 @@ CBM_TEST_BINARY="$WATCHDOG_BINARY" bash "$ROOT/tests/test_worker_watchdog.sh" # still exits nonzero for the user-facing tool error, but the supervisor must # preserve that response instead of misreporting exit_nonzero as a file crash. echo "=== Step 5c: worker error-response transport regression ===" -bash "$ROOT/tests/test_worker_error_response.sh" +CBM_TEST_BINARY="$WATCHDOG_BINARY" bash "$ROOT/tests/test_worker_error_response.sh" # Step 5d (#1388) is DELIBERATELY NOT GATING HERE — see # tests/test_hook_conflict_notice.sh for the full what-was-tried record. diff --git a/tests/test_hook_conflict_notice.sh b/tests/test_hook_conflict_notice.sh index b28b42493..e44b0f327 100644 --- a/tests/test_hook_conflict_notice.sh +++ b/tests/test_hook_conflict_notice.sh @@ -24,7 +24,7 @@ set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -BINARY="${ROOT}/build/c/codebase-memory-mcp" +BINARY="${CBM_TEST_BINARY:-${ROOT}/build/c/codebase-memory-mcp}" if [[ ! -x "${BINARY}" && -x "${BINARY}.exe" ]]; then BINARY="${BINARY}.exe" fi diff --git a/tests/test_worker_error_response.sh b/tests/test_worker_error_response.sh index 12ef481f3..5a28fb7da 100755 --- a/tests/test_worker_error_response.sh +++ b/tests/test_worker_error_response.sh @@ -6,7 +6,11 @@ set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -BINARY="${ROOT}/build/c/codebase-memory-mcp" +# scripts/test.sh builds into $BUILD_DIR, which is NOT build/c on every leg (the +# Linux containers use build/linux-arm64 / build/linux-amd64). Honour the binary +# the caller built, exactly as test_parent_watchdog.sh and test_worker_watchdog.sh +# do; the build/c default keeps a bare manual invocation working. +BINARY="${CBM_TEST_BINARY:-${ROOT}/build/c/codebase-memory-mcp}" if [[ ! -x "${BINARY}" && -x "${BINARY}.exe" ]]; then BINARY="${BINARY}.exe" fi