From 3ae6dba13f0fb5ecba31f682599a3e3452ba64b8 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 31 Aug 2026 11:26:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(smoke):=20=E6=A8=A1=E5=9E=8B=E4=BE=86?= =?UTF-8?q?=E6=BA=90=E5=88=A4=E5=AE=9A=E8=A3=9C=E4=B8=8A=E8=A8=88=E6=95=B8?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E5=86=92=E7=85=99=E9=A0=90=E6=9C=9F=E6=A2=9D?= =?UTF-8?q?=E6=95=B8=E5=B0=8D=E5=9B=9E=E5=AF=A6=E9=9A=9B=E8=B7=AF=E5=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重定基底到 develop 後,冒煙測試併入了 sdlc-gate.sh 取模型代號的四條來源 判定,但那支輸出函式沒有自己的計數器,四個預期值也沒跟著加。結果是實際 印出六十四條結果行、四類計數器只算到六十條,收尾的自我斷言當場判定不符, smoke 一律以 exit 4 收場。 補上第五個計數器 smoke_n_model 與對應的 SMOKE_EXPECT_MODEL,計數放在該 函式開頭,連建不出暫存目錄那條也算得到;總數、逐類比對訊息與結果摘要一併 納入模型來源這一類。五支 CLI 的 smoke 都回 status=ok,行數與各類條數三邊 一致。 Co-Authored-By: Claude Opus 5 (1M context) --- tools/wire-cli.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tools/wire-cli.sh b/tools/wire-cli.sh index a2853af..7dc3a86 100755 --- a/tools/wire-cli.sh +++ b/tools/wire-cli.sh @@ -743,14 +743,17 @@ if [ "$action" = smoke ]; then # 每一類實際跑過的結果行數。收尾時與下面宣告的預期條數逐類比對,加減判定路徑卻忘了改預期 # 就會當場失敗,散文與程式之間不會再各記一份數字。 - smoke_n_hook=0; smoke_n_wp=0; smoke_n_rs=0; smoke_n_wg=0 - # 預期條數(改動判定路徑時一起改): + smoke_n_hook=0; smoke_n_model=0; smoke_n_wp=0; smoke_n_rs=0; smoke_n_wg=0 + # 預期條數(改動判定路徑時一起改):每一類都要有自己的計數器,印得出結果行卻沒人計數的 + # 那一類會讓總數永遠對不上,斷言也就形同虛設。 # hook 模式 九支 hook 的每個接線模式各一條。sdlc-gate.sh、comment-scope.sh、 # lang-guard.sh 與 write-guard.sh 各有多個模式,所以比 hook 支數多 + # 模型來源 sdlc-gate.sh lock 取模型代號的四條來源判定路徑 # 工作包 sdlc-gate.sh wp-check skill 的歸屬判定路徑 # 重啟閘門 restart-gate.sh 的判定、清除路徑與狀態檔範圍檢查 # 寫入閘門 write-guard.sh 三種擋人模式與 release 解除模式的判定路徑 SMOKE_EXPECT_HOOK=17 + SMOKE_EXPECT_MODEL=4 SMOKE_EXPECT_WP=6 SMOKE_EXPECT_RS=16 SMOKE_EXPECT_WG=21 @@ -807,6 +810,8 @@ if [ "$action" = smoke ]; then smoke_model_case() { # $1=情境 $2=來源模式 $3=預期來源片段 _name="$1"; _mode="$2"; _want="$3" + # 先計數再開工:底下建不出暫存目錄那條路徑也會印一條結果行,計數放在後面就會漏掉它。 + smoke_n_model=$((smoke_n_model + 1)) _home=$(mktemp -d 2>/dev/null) || { smoke_fails=$((smoke_fails + 1)) printf '[jsc] sdlc-gate.sh model:建不出暫存目錄,模型來源判定沒驗到。\n' >> "$smoke_out" @@ -1033,10 +1038,13 @@ if [ "$action" = smoke ]; then # 少跑一條或多印一行都會在這裡現形,散文就不必再自己記一份數字。 smoke_lines=$(wc -l < "$smoke_out" 2>/dev/null | tr -d ' ') [ -n "$smoke_lines" ] || smoke_lines=0 - smoke_total=$((SMOKE_EXPECT_HOOK + SMOKE_EXPECT_WP + SMOKE_EXPECT_RS + SMOKE_EXPECT_WG)) + smoke_total=$((SMOKE_EXPECT_HOOK + SMOKE_EXPECT_MODEL + SMOKE_EXPECT_WP \ + + SMOKE_EXPECT_RS + SMOKE_EXPECT_WG)) smoke_mismatch="" [ "$smoke_n_hook" = "$SMOKE_EXPECT_HOOK" ] \ || smoke_mismatch="${smoke_mismatch}hook 模式 $smoke_n_hook 條(預期 $SMOKE_EXPECT_HOOK);" + [ "$smoke_n_model" = "$SMOKE_EXPECT_MODEL" ] \ + || smoke_mismatch="${smoke_mismatch}模型來源 $smoke_n_model 條(預期 $SMOKE_EXPECT_MODEL);" [ "$smoke_n_wp" = "$SMOKE_EXPECT_WP" ] \ || smoke_mismatch="${smoke_mismatch}工作包 $smoke_n_wp 條(預期 $SMOKE_EXPECT_WP);" [ "$smoke_n_rs" = "$SMOKE_EXPECT_RS" ] \ @@ -1046,7 +1054,7 @@ if [ "$action" = smoke ]; then [ "$smoke_lines" = "$smoke_total" ] \ || smoke_mismatch="${smoke_mismatch}結果行數 $smoke_lines 行(預期 $smoke_total);" - smoke_breakdown="hook 模式 $SMOKE_EXPECT_HOOK 條、工作包 $SMOKE_EXPECT_WP 條、重啟閘門 $SMOKE_EXPECT_RS 條、寫入閘門 $SMOKE_EXPECT_WG 條" + smoke_breakdown="hook 模式 $SMOKE_EXPECT_HOOK 條、模型來源 $SMOKE_EXPECT_MODEL 條、工作包 $SMOKE_EXPECT_WP 條、重啟閘門 $SMOKE_EXPECT_RS 條、寫入閘門 $SMOKE_EXPECT_WG 條" if [ -n "$smoke_mismatch" ]; then printf 'status=failed reason=%s\n' "冒煙結果行數與預期不符:${smoke_mismatch}判定路徑有增減時要一併改腳本裡的預期條數" printf 'lines\t%s\n' "$smoke_lines" @@ -1057,7 +1065,7 @@ if [ "$action" = smoke ]; then fi if [ "$smoke_fails" -eq 0 ]; then - printf 'status=ok reason=%s\n' "九支 hook 的每個接線模式都跑得完,工作包歸屬、部署後重啟閘門與寫入提交閘門的每條路徑也各走過一次($smoke_breakdown),沒有執行期錯誤" + printf 'status=ok reason=%s\n' "九支 hook 的每個接線模式都跑得完,模型來源、工作包歸屬、部署後重啟閘門與寫入提交閘門的每條路徑也各走過一次($smoke_breakdown),沒有執行期錯誤" printf 'lines\t%s\n' "$smoke_lines" cat "$smoke_out"; rm -f "$smoke_out"; exit 0 fi