5173c7f3e5
三支測試在乾淨 main 上一直紅,全部是測試自己的 bug,不是工具的離開碼漂了:
1. hooks/tests/wiki-compress.test.sh(⑯⑰㉒):E 群拼 payload 時把
{'file_path':...} 直接嵌進三層巢狀 "$(...)" 裡;其中一層雙引號提早收口,
讓大括號在 bash 眼裡變成「未加引號」,觸發大括號展開——逗號分隔的
內容被拆成三條各自獨立的 python3 -c 呼叫,`{`/`}` 本身被吃掉,
python 因此噴三次 SyntaxError。改用兩支小函式(json_edit/json_write)
把內容經環境變數傳給 python,內容永遠不會被當成 bash 原始碼解析。
2. scripts/test-stage.sh(A1–A4、D1–D4、D14):全部卡在
`[ "$(wc -l < "$LOG")" = 0 ]`——macOS/BSD 的 `wc -l` 會在數字前墊空白
(GNU coreutils 不會),比對永遠是 " 0" != "0"。工具本身的離開碼
是對的(rc=2,正確拒絕),是測試的比對方式在這台機器上有 bug。
一律加 `| tr -d " "` 去掉墊白。
3. scripts/test-milestone-account.sh(⑰):同一款 macOS `wc -l` 墊白 bug,
帳本筆數比對 `[ "$(wc -l < ...)" = "4" ]` 永遠比不過。同樣修法。
三支都在 `env -u CLAUDE_CODE_CHILD_SESSION` 下重跑到 exit 0:
wiki-compress.test.sh 25/25 通過
test-stage.sh 45/45 通過(連跑 3 次穩定)
test-milestone-account.sh 23/23 通過
跑過 docs/TESTING.md 記載的其餘 52 支測試(不含兩支需要真 Claude CLI 的
live 測試),全數 0 失敗,唯一例外是 hooks/tests/mainline-members-by-dependency.test.sh
的 ㊽(帳本 cwd 形狀)——在乾淨的 main(未套用本次修改)上同樣紅,
與本次改動的三個檔案無關,非本票範圍,另行處理。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>