make test is a coin flip: the e2e suite runs close to go's default timeout #62

closed cmc opened this on 2026-08-31 16:01 UTC

Discussion

cmc 2026-08-31 16:01 UTC

make test runs go test ./... -count=1 with no -timeout, so go's 600s per-package default applies. The e2e package runs 400-700s depending on machine load. Five runs on 2026-08-31, same tree apart from a stylesheet and a table-padding function:

409.8s  ok
518.4s  ok
485.1s  ok
661.9s  FAIL
546.6s  ok

The failure is the timeout firing, not an assertion: the package is killed and every goroutine is dumped, which reads as an unrelated net/http transport stack rather than a named test. Nothing is wrong with the tree, and the same commit passes on a rerun.

A suite that fails a fifth of the time for reasons unrelated to the change under test is worse than no suite, because it trains you to rerun rather than read. Give the run room; a genuine hang still fails, just later.

closed by commit 7d538e7e94 by cmc: Give the test suite room against go's default timeout

2026-08-31 16:06 UTC

referenced in commit 62742f1870 by cmc: e2e: reserve every port before releasing any of them

2026-09-01 07:08 UTC

referenced in commit 3a243db45e by cmc: runner: a dropped log stream no longer fails the build it was recording

2026-09-01 07:19 UTC