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