Merge remote-tracking branch 'origin/main' into feat/one-group-one-plan

# Conflicts:
#	merge-check.sh
This commit is contained in:
2026-10-17 21:39:24 +02:00
+10 -4
View File
@@ -12,7 +12,7 @@
# 1. formatted and vetted, with and without the build tag `integration`;
# 2. the unit level: `go test ./...` untagged and without the race detector, timed and held to a bound
# (unit_bound below): a test with no database, bus, running service or other process (novox/hq ADR 0391,
# how-we-build section 5). Over the bound the check fails and names the slowest tests (issue 895);
# how-we-build section 5). With a bound set, over it the check fails and names the slowest tests (issue 895);
# 3. the integration level: the whole suite with `-tags integration`, packages in parallel, against the
# throwaway store the build seat raised at the release the mesh runs; every live test on a bus of its own
# (internal/testbus), so nothing is serialised. Under the race detector when the toolchain has a C
@@ -27,9 +27,11 @@ set -eu
export GOFLAGS=-mod=vendor GOPROXY=off
# **The unit level's bound, in seconds** (issue 895): the slowest package's own test time of the untagged run, the
# compile not counted. It is a few seconds while the tests of the last packages are still being split from the
# integration level; it becomes 1 s (how-we-build section 5: the whole unit suite under a second) when that is done.
unit_bound=5
# compile not counted. A run over it fails the check and names the slowest tests. It is 3 s since the tests carry the
# `integration` tag (design 47 milestone 3): the slowest packages, cmd/mesh-controller and internal/catalogue, measured
# 2.6-2.8 s in about 2000 small tests each. How-we-build section 5 asks 1 s for the whole unit suite: issue 1055
# (a catalogue loaded once per package run, fewer source-scanning tests).
unit_bound=3
# judge_store_tests says each listed test of one package as `go test -v` reported it, and counts in $missing each
# that did not pass: $1 the package, $2 go test's exit status, $3 the file holding its output, then the names.
@@ -74,6 +76,10 @@ judge_unit_run() {
tests=$(grep -c '^T' "$out.judged" || true)
skipped=$(awk -F'\t' '$1 == "S" {print $2}' "$out.judged")
level=$(awk -F'\t' '$1 == "P" && $2 + 0 > m {m = $2 + 0} END {printf "%.2f", m}' "$out.judged")
if [ -z "$bound" ]; then
echo "unit level: $tests tests ($skipped skipped), $level s (no bound enforced yet)"
return 0
fi
echo "unit level: $tests tests ($skipped skipped), $level s (bound $bound s)"
if awk -v t="$level" -v b="$bound" 'BEGIN {exit !(t + 0 > b + 0)}'; then
echo "the unit level took $level s, over its bound of $bound s; the slowest tests:"