diff --git a/.kiro/specs/eliminate-frontend-makefile/tasks.md b/.kiro/specs/eliminate-frontend-makefile/tasks.md index 6238161b..16049329 100644 --- a/.kiro/specs/eliminate-frontend-makefile/tasks.md +++ b/.kiro/specs/eliminate-frontend-makefile/tasks.md @@ -15,7 +15,7 @@ - Observable: a captured failing run shows a real link-time error tied to the removed dependency; the immediately following restored run passes with no other change - _Requirements: 3.2, 3.3_ -- [ ] 2. (P) Core: migrate xce-build.sh's unit-test invocation off Make +- [x] 2. (P) Core: migrate xce-build.sh's unit-test invocation off Make - Replace both `cd frontend && make test` call sites (the `apiserver` case and the `all` case) with direct `go test` invocations covering the exact same package set and flags the Makefile's `test` target runs today (apiserver: `store`/`utils`/`controllers`/`backend` under `CGO_ENABLED=0`; xcecli: full module), mirroring the `xcecli` case's own already-Makefile-free style in the same file - Observable: `/xce-build apiserver` and `/xce-build all` run unit tests with zero invocation of `make`, reporting the identical test package set and pass/fail counts as the pre-migration baseline - _Requirements: 2.1, 2.2, 2.3_ @@ -83,4 +83,5 @@ ## Implementation Notes +- Task 2: `/xce-build all` currently aborts (`set -euo pipefail`) at the pre-existing `meson test --print-errorlogs` step, BEFORE reaching the migrated Go-test line — two unrelated, already-logged C-side failures (bug-1723, LeakSanitizer on `xcelib_test`; bug-1758, `sched_core_events_test` deterministic failure), both predating this spec. Task 2's `all`-case line itself is verified (byte-identical to the fully-verified `apiserver`-case line), but this means task 4.1's "final go/no-go gate" and task 4.2's post-deletion re-validation will hit the SAME pre-existing abort when running `/xce-build all` — those tasks will need to either scope their validation to `/xce-build apiserver` + a separate `meson test` invocation that tolerates these 2 known-unrelated failures, or note them as pre-existing/out-of-scope rather than treating them as a regression from this spec. - Task 1.2: design.md's Testing Strategy suggests `librtti_dep` as the example dependency to remove when proving the new backend test() exercises the real CGO path. Empirically (implementer + independent reviewer both reproduced this live), removing `librtti_dep` does NOT reproduce a link failure for the `apiserver/backend/...` test package — none of `librtti`'s exported symbols are actually pulled into this specific link unit's undefined-symbol set. `c_capnproto_dep` (real `capn_*` undefined-reference errors from `request.c`/`controller.capnp.c`) is the dependency that genuinely reproduces the failure and was used instead. `apiserver_cgo_deps` itself was left byte-identical to task 1.1's state (verification-only task, no permanent code change). diff --git a/src/tools/xce-build.sh b/src/tools/xce-build.sh index 16c608a2..5d6e22d5 100755 --- a/src/tools/xce-build.sh +++ b/src/tools/xce-build.sh @@ -272,7 +272,7 @@ case "$COMPONENT" in meson compile -C "$BUILD_DIR" apiserver xcecli if [ "$RUN_TESTS" = 1 ]; then echo "=== Running frontend Go unit tests ===" - cd frontend && make test + cd frontend/apiserver && CGO_ENABLED=0 go test ./store/... ./utils/... ./controllers/... ./backend/... -count=1 && cd ../xcecli && CGO_ENABLED=0 go test ./... -count=1 fi ;; xcecli) @@ -319,7 +319,7 @@ case "$COMPONENT" in echo "=== Running scheduler test (manual) ===" "./$BUILD_DIR/scheduler/testsuite/sched_test" echo "=== Running frontend Go unit tests ===" - cd frontend && make test + cd frontend/apiserver && CGO_ENABLED=0 go test ./store/... ./utils/... ./controllers/... ./backend/... -count=1 && cd ../xcecli && CGO_ENABLED=0 go test ./... -count=1 fi ;; *)