Files
Timmy-time-dashboard/scripts/pre-commit-hook.sh
2026-03-08 13:27:11 -04:00

28 lines
831 B
Bash
Executable File

#!/usr/bin/env bash
# Pre-commit hook: lint + test with a wall-clock limit.
# Blocks the commit if formatting, imports, or tests fail.
# Current baseline: ~18s wall-clock. Limit set to 30s for headroom.
echo "Auto-formatting (black + isort)..."
poetry run python -m black --line-length 100 src/ tests/ --quiet
poetry run isort --profile black --line-length 100 src/ tests/ --quiet 2>/dev/null
git add -u
MAX_SECONDS=30
echo "Running tests (${MAX_SECONDS}s limit)..."
timeout "${MAX_SECONDS}" poetry run pytest tests -q --tb=short --timeout=10
exit_code=$?
if [ "$exit_code" -eq 124 ]; then
echo ""
echo "BLOCKED: tests exceeded ${MAX_SECONDS}s wall-clock limit."
echo "Speed up slow tests before committing."
exit 1
elif [ "$exit_code" -ne 0 ]; then
echo ""
echo "BLOCKED: tests failed."
exit 1
fi