Files
ISEP/hooks/tests
Leo 5173c7f3e5 fix(tests):修好三支跟工具無關的壞測試(inkstone/ISEP#161)
三支測試在乾淨 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>
2026-09-19 13:32:59 +08:00
..