test(build-time-versioning): add motivating-incident regression script
Adds src/tools/test-build-version-regression.sh, a standalone script (same convention as test-commit-durability.sh/test-heartbeat-tolerance.sh) that runs real xce-build.sh scheduler builds in both asan and debug profiles, extracts the commit id from xce_scheduler --version, and fails loudly if it doesn't match a live git rev-parse --short HEAD (+ -dirty) -- the exact staleness this feature was built to make visible without forensic git commands. Tolerates xce-build.sh's own known-unrelated flaky test exit (bug-1560) via captured exit status rather than a blanket set -e bypass, so a genuine compile failure still fails the check. A built-in demonstration proves the comparison logic rejects a wrong hash, an empty commit id, and the literal "unknown" fallback. Verified independently by review with a full from- scratch re-run of both profiles. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
43c7384fd6
commit
0eefc95f0a
2 changed files with 280 additions and 4 deletions
|
|
@ -107,10 +107,10 @@
|
|||
- _Depends: 5.1_
|
||||
|
||||
- [ ] 6. Integration: cross-toolchain consistency and regression verification
|
||||
- [ ] 6.1 Motivating-incident regression test
|
||||
- Build a C daemon via `/xce-build` (any profile) and confirm its `--version` commit id is non-`unknown` and matches `git rev-parse --short HEAD` at build time -- the exact scenario that was previously silent/empty
|
||||
- Repeat against at least the `asan` and `debug` profiles specifically (the motivating incident was a `debug`-profile binary), confirming both carry accurate, matching values
|
||||
- Observable: an automated check fails loudly if `xce-build.sh`'s computed commit id ever regresses to empty/missing, in either profile
|
||||
- [x] 6.1 Motivating-incident regression test
|
||||
- New standalone script `src/tools/test-build-version-regression.sh` (follows the existing `test-commit-durability.sh`/`test-heartbeat-tolerance.sh` convention: real-build regression check, not a meson `test()`) runs real `xce-build.sh scheduler` builds in fresh dirs for both `asan` and `debug`, extracts the commit id from `xce_scheduler --version`, and compares it against a live `git rev-parse --short HEAD` (+`-dirty`, using the identical dirty-detection logic as `xce-build.sh` itself)
|
||||
- Deliberately tolerates only `xce-build.sh`'s own known-unrelated flaky-test exit code (bug-1560) via captured exit status, not a blanket `set -e` bypass -- a real compile failure still fails the check, since fresh build dirs mean no stale binary can survive to fool the binary-existence + `--version` gate
|
||||
- Observable confirmed live (independently re-run twice, by both implementer and review, from-scratch builds each time): both asan and debug profiles PASS with a real, matching, non-`unknown` commit id; a built-in demonstration block proves the comparison logic correctly fails loudly on a wrong hash, an empty commit id, and the literal `unknown` fallback
|
||||
- _Requirements: 4.1, 4.2, 4.3, 5.1, 5.2_
|
||||
- _Depends: 2.1, 3.2, 3.3_
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue