diff --git a/Makefile b/Makefile index 381241f..b7c0900 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,10 @@ docker: docker build -t quack . hooks: - @printf '#!/bin/sh\nset -e\nmake check\n' > .git/hooks/pre-commit + @printf '#!/bin/sh\nset -e\nmake lint\nmake fmt-check\n' > .git/hooks/pre-commit @chmod +x .git/hooks/pre-commit - @echo "Installed pre-commit hook (runs make check)." + @echo "Installed pre-commit hook (runs make lint && make fmt-check)." + @echo "Note: tests are deliberately not in the pre-commit hook so the" + @echo "TDD red-phase commit (failing tests, no implementation yet)" + @echo "can land. CI runs make check via docker build, which catches" + @echo "any branch that ships red." diff --git a/README.md b/README.md index f739265..e1f52c1 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,11 @@ All work on quack is test-driven. No exceptions. test-then-implementation sequence into reviewable commits, but the final history must still show tests landing before (or with) the matching implementation. +8. The pre-commit hook installed by `make hooks` runs + `make lint && make fmt-check`, not the full `make check`. This is deliberate + so the TDD red-phase commit (failing tests, no implementation yet) can land. + The full `make check` runs as part of `docker build .`, which is what CI + executes, so a red branch still cannot reach `main`. ## Design