From 62a9f6223745c0df42be1f4226f31dfb10c83ea8 Mon Sep 17 00:00:00 2001
From: ax_rd <ax_rd@aisim.cn>
Date: Thu, 03 Sep 2026 13:53:11 +0800
Subject: [PATCH] fix: e2e-verify.sh 退出码处理(FAILS 计数 + pipefail,CI 可凭退出码判定)

---
 scripts/e2e-verify.sh |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/scripts/e2e-verify.sh b/scripts/e2e-verify.sh
index 17c4e96..b4aa02b 100644
--- a/scripts/e2e-verify.sh
+++ b/scripts/e2e-verify.sh
@@ -1,8 +1,10 @@
 #!/bin/bash
 # 端到端验证(对标 spec 测试计划第 2 节)
 set -e
+set -o pipefail # 防止管道末端(tail/head)掩盖真实命令失败
 export CGO_CFLAGS="-DSQLITE_ENABLE_FTS5"
 export CGO_LDFLAGS="-lm"
+FAILS=0
 VAULT="${1:-$HOME/rag-lpg-obsidian}"
 cd "$(dirname "$0")/.."
 go build -o /tmp/kb-cli-e2e .
@@ -17,7 +19,11 @@
 mkdir -p "$VAULT/笔记"
 TESTFILE="$VAULT/笔记/e2e-test-$(date +%s).md"
 printf -- "---\ntitle: e2e测试\ntags: [补气]\n---\ne2e 补气测试内容\n" > "$TESTFILE"
-/tmp/kb-cli-e2e search e2e --vault "$VAULT" --top 3 2>&1 | grep -q "e2e测试" && echo "PASS: 未commit编辑可见" || echo "FAIL: 未commit编辑不可见"
+if /tmp/kb-cli-e2e search e2e --vault "$VAULT" --top 3 2>&1 | grep -q "e2e测试"; then
+  echo "PASS: 未commit编辑可见"
+else
+  echo "FAIL: 未commit编辑不可见"; FAILS=$((FAILS+1))
+fi
 rm -f "$TESTFILE"
 /tmp/kb-cli-e2e index build --vault "$VAULT" 2>/dev/null
 
@@ -27,14 +33,16 @@
 # 故按「行首路径以 .md 结尾」计数(以实际输出为准的最小适配)。
 N=$(/tmp/kb-cli-e2e search 补气 --vault "$VAULT" --top 10 2>/dev/null | grep -cE '^[^[:space:]]+\.md[[:space:]]' || true)
 echo "补气 命中 $N 条 (期望 >= 5)"
-if [ "$N" -ge 5 ]; then echo "PASS: CJK 召回 >= 5"; else echo "FAIL: CJK 召回不足"; fi
+if [ "$N" -ge 5 ]; then echo "PASS: CJK 召回 >= 5"; else echo "FAIL: CJK 召回不足"; FAILS=$((FAILS+1)); fi
 
 echo "=== 5. explore 预算内 ==="
 BYTES=$(/tmp/kb-cli-e2e explore "电子秤补气失败" --vault "$VAULT" --top 3 2>/dev/null | wc -c)
 echo "explore 输出 ${BYTES} 字节 (上限 32000+尾注)"
-if [ "$BYTES" -le 32200 ]; then echo "PASS: explore 预算内"; else echo "FAIL: explore 超预算"; fi
+if [ "$BYTES" -le 32200 ]; then echo "PASS: explore 预算内"; else echo "FAIL: explore 超预算"; FAILS=$((FAILS+1)); fi
 
 echo "=== 6. 悬空补全 ==="
 /tmp/kb-cli-e2e graph stats --vault "$VAULT" 2>&1 | head -5
 
 echo "=== e2e 验证完成 ==="
+# CI 可凭退出码判定:任一检查 FAIL 则非 0
+[ "$FAILS" -eq 0 ] || exit "$FAILS"

--
Gitblit v1.10.0