Files
Claude-Code-Game-Studios/.claude/docs/hooks-reference/pre-push-test-gate.md
T
DonchitosandClaude Opus 5.5 b21fa0f7f2 Release 1.1.2 — the default path works end to end
Fix release for 1.1.1: the minimal path end to end, engine commands that
run on Godot, Unity and Unreal, hook warnings you can see, and verdicts
that say when they could not check. Details in CHANGELOG.md; upgrade
steps in UPGRADING.md (v1.1.1 → v1.1.2).

Fixes #67
Fixes #131

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
2026-09-29 21:32:19 +10:00

77 lines
1.9 KiB
Markdown

# Hook: pre-push-test-gate
## Trigger
Runs before any push to a remote branch. Mandatory for pushes to `main` (the
trunk) and to `release/*` branches.
## Purpose
Ensures the build compiles, unit tests pass, and critical smoke tests pass
before code reaches shared branches. This is the last automated quality gate
before code affects other developers.
## Implementation
```bash
#!/bin/bash
# Pre-push hook: Build and test gate
REMOTE="$1"
URL="$2"
# Only enforce the full gate on the trunk and release branches
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
FULL_GATE=false
case "$CURRENT_BRANCH" in
main|release/*) FULL_GATE=true ;;
esac
echo "=== Pre-Push Quality Gate ==="
# Step 1: Build
echo "Building..."
# Adapt to your build system:
# make build || exit 1
# dotnet build || exit 1
# cargo build || exit 1
echo "Build: PASS"
# Step 2: Unit tests
echo "Running unit tests..."
# Adapt to your test framework:
# python -m pytest tests/unit/ -x || exit 1
# dotnet test tests/unit/ || exit 1
# cargo test || exit 1
echo "Unit tests: PASS"
if [ "$FULL_GATE" = true ]; then
# Step 3: Integration tests (only for protected branches)
echo "Running integration tests..."
# python -m pytest tests/integration/ -x || exit 1
echo "Integration tests: PASS"
# Step 4: Smoke tests
echo "Running smoke tests..."
# python -m pytest tests/playtest/smoke/ -x || exit 1
echo "Smoke tests: PASS"
# Step 5: Performance regression check
echo "Checking performance baselines..."
# python tools/ci/perf_check.py || exit 1
echo "Performance: PASS"
fi
echo "=== All gates passed ==="
exit 0
```
## Agent Integration
When this hook fails:
1. Build failure: invoke `lead-programmer` to diagnose
2. Unit test failure: invoke `qa-tester` to identify the failing test and
`gameplay-programmer` or relevant programmer to fix
3. Performance regression: invoke `performance-analyst` to analyze