All checks were successful
check / check (push) Successful in 1m34s
`script/test` did not pass `-count=1`, so on an unchanged tree Go served the whole suite from its test cache: exit 0 in ~0.2s with every package marked `(cached)` and not one DNS query made. This repo's suite exists to exercise live resolution on every run (`TESTING.md`), so that green asserted nothing — and it is exactly the green used as evidence that a flakiness fix works, since "run it a few times" stops being runs after the first. `-count=1` now disables caching on every invocation. The conditional verbose rerun that `REPO_POLICIES.md` mandates was missing at the same spot and is added here rather than left broken: the primary run had been unconditionally `-v`, which is the failure mode the policy exists to prevent (unreadable CI and `docker build` logs on success). Tests now run quiet, and only a failure triggers the `-v` rerun. The rerun carries `-count=1` too, so it cannot replay a cached copy of the failure it is meant to diagnose, and its exit status is discarded in favour of a forced 1: the first failure already proved the suite broken, so a flake that passes the second time must not turn the build green. `-timeout 90s` is untouched. It is a deliberate backstop that must strictly exceed the 60s hard cap on suite duration. No special-casing for the Docker build, which also reaches this script via `RUN make test`: a fresh container's test cache is empty, so `-count=1` changes nothing there and carving out an exception would only create a second code path that could drift. Verified: three back-to-back `make test` runs on an unchanged tree, zero `(cached)` markers, ~4.0-4.5s wall each (was ~0.2s cached), comfortably inside the 20s target with `-race` and `-cover` both still working and coverage percentages unchanged. The rerun-and-still-fail path was exercised against a purpose-built flaky test that fails once then passes: quiet failure, verbose rerun that genuinely re-executed, exit 1 regardless. `make check` green.
36 lines
1.3 KiB
Bash
Executable File
36 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/test: run the test suite.
|
|
#
|
|
# -count=1 disables Go's test cache, and is load-bearing here. This
|
|
# suite queries live DNS on every run by policy (TESTING.md); a cached
|
|
# result is a replay of an earlier run's output with no query made at
|
|
# all. On an unchanged tree the whole suite would return success in
|
|
# under a second having resolved nothing, which makes the repeated-run
|
|
# green that is used as evidence for flakiness fixes worthless. Do not
|
|
# remove it.
|
|
#
|
|
# Conditional verbose rerun per REPO_POLICIES.md: run quiet first so
|
|
# CI and docker build logs stay readable, and rerun with -v only on
|
|
# failure. The rerun also carries -count=1 (a cached replay of the
|
|
# failure would show nothing new), and the exit status is forced to 1
|
|
# no matter how the rerun ends: the first failure already proved the
|
|
# suite broken, so a flaky test that passes the second time must not
|
|
# turn the build green.
|
|
#
|
|
# -timeout 90s is a deliberate backstop above the 60s hard cap on
|
|
# suite duration. Do not lower it.
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
go test -count=1 -race -timeout 90s -cover ./... || {
|
|
echo "--- Rerunning with -v for details ---" >&2
|
|
go test -count=1 -race -timeout 90s -v ./... || true
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
main "$@"
|