1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#!/usr/bin/env bash # Case 05: 'FOO=bar git status' inside an .hg repo must be blocked # (env-var prefix correctly skipped to find the real leading command). set -u tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT mkdir -p "$tmp/repo/.hg" input=$(jq -n --arg cwd "$tmp/repo" --arg cmd "FOO=bar GIT_PAGER=cat git status" '{ cwd: $cwd, hook_event_name: "PreToolUse", tool_name: "Bash", tool_input: { command: $cmd } }') err=$(echo "$input" | "$HOOK_SCRIPT" 2>&1 >/dev/null) rc=$? if [[ $rc -ne 2 ]]; then echo "expected exit 2 (blocked), got $rc" echo "stderr: $err" exit 1 fi