Pre-commit hook runs lint+fmt-check, not full check (TDD)
Tests are deliberately excluded from the pre-commit hook so that the TDD red-phase commit (failing tests landing before implementation) can land on a feature branch. CI still runs full make check via docker build so a red branch cannot reach main.
This commit is contained in:
8
Makefile
8
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."
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user