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:
parent
25912eac0c
commit
dbabdf39d0
2 changed files with 32 additions and 0 deletions
27
.githooks/pre-push
Executable file
27
.githooks/pre-push
Executable 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
|
||||||
5
start.sh
5
start.sh
|
|
@ -60,6 +60,11 @@ start_docker() {
|
||||||
build_flag="--build"
|
build_flag="--build"
|
||||||
fi
|
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 "Starting all services with Docker Compose..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue