Add shared pre-push hook to run tests before pushing

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.
This commit is contained in:
Viktor Barzin 2026-02-14 11:36:26 +00:00
parent 25912eac0c
commit dbabdf39d0
No known key found for this signature in database
GPG key ID: 0EB088298288D958
2 changed files with 32 additions and 0 deletions

27
.githooks/pre-push Executable file
View file

@ -0,0 +1,27 @@
#!/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

View file

@ -60,6 +60,11 @@ start_docker() {
build_flag="--build"
fi
# Ensure git hooks are configured (idempotent)
if git rev-parse --git-dir &>/dev/null; then
git config core.hooksPath .githooks
fi
echo "Starting all services with Docker Compose..."
echo ""