build: adopt the mandated test target pattern (closes #2)
The test: target was a bare `go test $(GO_PKGS)`, diverging from the
mandated shape in four ways: no -timeout 30s, no -race, no -cover, and no
conditional verbose rerun. It now runs
go test -timeout 30s -race -cover $(GO_PKGS)
and, on failure, reruns with -v and then exits 1 — so the build still
fails even if a flaky test happens to pass on the second attempt. The
repo's existing $(GO_PKGS) variable is kept rather than hardcoding ./...,
and the recipe is @-prefixed so the rerun banner is the only noise.
The substance here is -race, not the Makefile edit: this is the first
time the suite has run under the race detector. It is clean, across five
consecutive uncached runs, including the tcell terminal layer and the
os.Exit-path playthrough tests that were the suspected risk.
Timing against the 20-second budget: 5.1s cold (including the race
build), ~2.3s warm. The failure path was exercised with a throwaway
failing test to confirm the verbose rerun fires and make exits non-zero.
Build tooling only; no game behavior change. .golangci.yml is untouched.
This commit is contained in:
8
Makefile
8
Makefile
@@ -30,6 +30,10 @@ fmt-check:
|
||||
lint:
|
||||
golangci-lint run $(GO_PKGS)
|
||||
|
||||
# Run the test suite.
|
||||
# Run the test suite. Quiet on success; on failure, rerun verbosely for the
|
||||
# full output and still fail the target (the first run already proved the
|
||||
# tests are broken, so a flaky pass on the rerun must not rescue the build).
|
||||
test:
|
||||
go test $(GO_PKGS)
|
||||
@go test -timeout 30s -race -cover $(GO_PKGS) || \
|
||||
{ echo "--- Rerunning with -v for details ---"; \
|
||||
go test -timeout 30s -race -v $(GO_PKGS); exit 1; }
|
||||
|
||||
13
TODO.md
13
TODO.md
@@ -34,6 +34,19 @@ wizard commands).
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-08-09 Policy-shaped `make test` (`make-test-policy-pattern`): the `test:`
|
||||
target was a bare `go test $(GO_PKGS)` and now runs
|
||||
`-timeout 30s -race -cover` with the mandated conditional verbose rerun (on
|
||||
failure it reruns with `-v` and then `exit 1`, so a flaky pass on the second
|
||||
attempt cannot rescue the build). `$(GO_PKGS)` is kept rather than hardcoding
|
||||
`./...`. The substance was `-race`, not the Makefile edit: this is the first
|
||||
time the suite has run under the race detector, and it is clean — no data
|
||||
races across five consecutive uncached runs, including the tcell terminal
|
||||
layer and the `os.Exit`-path playthrough tests. Wall clock 5.1s cold
|
||||
(including the race build) and ~2.3s warm, against the 20s policy budget. The
|
||||
failure path was exercised with a throwaway failing test to confirm the rerun
|
||||
fires and `make` exits non-zero. Build tooling only; no game behavior change.
|
||||
|
||||
- 2026-08-07 Canonical linter config (`golangci-v2.12.2`): replaced
|
||||
`.golangci.yml` with the shared canonical config (v2 schema; settings now live
|
||||
under `linters.settings`, so the `lll`/`funlen`/`cyclop`/`dupl` thresholds
|
||||
|
||||
Reference in New Issue
Block a user