diff --git a/ci/verify-failure-guard.sh b/ci/verify-failure-guard.sh index cadef0c..6b64a6f 100644 --- a/ci/verify-failure-guard.sh +++ b/ci/verify-failure-guard.sh @@ -13,6 +13,14 @@ cat "$log" echo "NEGATIVE_MVN_EXIT=$code" [ "$code" -ne 0 ] || { echo 'Empty schema unexpectedly passed' >&2; exit 1; } grep -q 'Schema-validation: missing table' "$log" -grep -q 'Tests run: 92, Failures: 0, Errors: 11, Skipped: 0' "$log" +# 只钉“缺表必须让真实库用例报 error、其余断言不得失败”这一契约,不钉具体用例总数: +# 门禁类会随被测类新增用例而变化(2026-10-27 已由 92 增至 101),写死总数会把正常演进变成红灯。 +summary=$(sed -n 's/.*Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]*\).*/\1 \2 \3 \4/p' "$log" | tail -1) +[ -n "$summary" ] || { echo 'Negative gate produced no Surefire summary' >&2; exit 1; } +set -- $summary +echo "NEGATIVE_SUMMARY tests=$1 failures=$2 errors=$3 skipped=$4" +[ "$1" -gt 0 ] || { echo 'No tests ran' >&2; exit 1; } +[ "$2" -eq 0 ] || { echo 'Empty schema caused assertion failures, not schema errors' >&2; exit 1; } +[ "$3" -gt 0 ] || { echo 'Empty schema did not produce any schema error' >&2; exit 1; } [ -z "$(find target -maxdepth 1 -name '*.jar' -print -quit 2>/dev/null)" ] || { echo 'Failed gate produced a JAR' >&2; exit 1; } echo 'CI_EMPTY_SCHEMA_FAILURE_GUARD=PASS'