#!/bin/bash # 打 tag 閘的測試(docs/TESTING.md A3) # 判準:版本對不上的 tag 要擋;只是讀 tag、或文字裡提到,都不准擋 cd "$(dirname "$0")/.." || exit 1 H=hooks/release-tag-guard.sh PASS=0; FAIL=0 run(){ printf '%s' "{\"tool_name\":\"Bash\",\"tool_input\":{\"command\":$(python3 -c 'import json,sys;print(json.dumps(sys.argv[1]))' "$2")}}" \ | bash "$H" >/dev/null 2>&1 got=$? if [ "$got" = "$1" ]; then PASS=$((PASS+1)); printf ' ✅ '; else FAIL=$((FAIL+1)); printf ' ❌ '; fi printf 'want=%s got=%s %.56s\n' "$1" "$got" "$2" } echo "── 該擋:版本號與 plugin.json 對不上 ──" run 2 'git tag -a v9.9.9 -m test' run 2 'echo 開始 && git tag -a v9.9.9 -m test' run 2 'ls && git tag -a v9.9.9 -m x' run 2 'cd /tmp; git tag -a v9.9.9 -m x' echo "── 不該擋:只是讀、只是提到 ──" run 0 'git tag -l' run 0 'echo 等一下要 git tag -a v9.9.9' run 0 'git tag -a v9.9.9 -m x --dry-run' run 0 'grep -n "git tag" hooks/release-tag-guard.sh' echo echo "$PASS/$((PASS+FAIL)) 通過" [ "$FAIL" -eq 0 ]