Hook lives in .githooks/pre-push (tracked) and runs pytest inside the Docker app container. start.sh auto-configures core.hooksPath so new clones pick it up on first run.
27 lines
671 B
Bash
Executable file
27 lines
671 B
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# pre-push hook: runs the test suite before allowing a push.
|
|
# If tests fail, the push is aborted.
|
|
#
|
|
|
|
echo "Running tests before push..."
|
|
|
|
# Check if the app container is running
|
|
if ! docker compose ps --status running 2>/dev/null | grep -q rec-app; then
|
|
echo "ERROR: rec-app container is not running."
|
|
echo "Start it with: docker compose up -d"
|
|
echo "Skipping tests — push blocked."
|
|
exit 1
|
|
fi
|
|
|
|
docker compose exec -T app pytest tests/ -v --tb=short
|
|
status=$?
|
|
|
|
if [ $status -ne 0 ]; then
|
|
echo ""
|
|
echo "Tests failed — push aborted."
|
|
echo "Fix the failures and try again, or push with --no-verify to skip."
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|