mesh-build-go: a package that fails without an assertion carries its real cause, never "PASS" (issue 1901) #477

Merged
jschoubben merged 3 commits from fix/1901-package-cause into main 2026-10-25 15:07:41 +00:00
Member

Issue 1901, met a third time: a mesh-controller try reported its only failure as "...cmd/mesh-controller: PASS". The race detector had reported after the tests' PASS and the process exited 66, and go test -json carries no error line for a panic, a timeout, an exit or a race.

  • go test's summary lines (only its exact forms: PASS or FAIL alone, "ok \t", "FAIL\t") are never a failure's words.
  • A package failure with no failed test names the tests that were running and keeps their output.
  • The cause is read from all output before cutting, from column-0 runtime lines only (a test's logged "panic:" is never the cause): a race (the access, its frame, where its goroutine was created), a panic or timeout (with its running tests), a fatal error or signal, the first build error, or else words saying the program exited while named tests ran or after they passed. Output starts with the cause, so an older checker reads it too; a cause is cut to 1 KB.

Tests (1901/AC4), from real go1.27.3 go test -json captures of ten cases (panic, timeout, timeout with a 16 KB dump, build failure, os.Exit, SIGKILL, TestMain panic and exit after PASS, race in a test and in TestMain), each written first and seen to fail: among them TestALoggedPanicIsNotTheCause and TestOnlyGosExactFormsAreSummaryOrCause.

Checked: gofmt, go vet with and without -tags integration, the unit suite. A try passed on 663f3de9 (try-1792939128188902515). The operator decided no checks run during the recovery (2026-10-25 15:53, issue 1945 note 27). Works with the old and new checker either way; the checker's half is mesh-delivery fix/1901-package-cause.

Known: the clip can still put the cause ahead of the 4096-byte tail, up to about 1 KB over; the checker enforces 4096 itself.

Reviewed-by: reviewer-1901b@shanks at 155124b59a

Issue 1901, met a third time: a mesh-controller try reported its only failure as "...cmd/mesh-controller: PASS". The race detector had reported after the tests' PASS and the process exited 66, and go test -json carries no error line for a panic, a timeout, an exit or a race. - go test's summary lines (only its exact forms: PASS or FAIL alone, "ok \t<pkg>", "FAIL\t<pkg>") are never a failure's words. - A package failure with no failed test names the tests that were running and keeps their output. - The cause is read from all output before cutting, from column-0 runtime lines only (a test's logged "panic:" is never the cause): a race (the access, its frame, where its goroutine was created), a panic or timeout (with its running tests), a fatal error or signal, the first build error, or else words saying the program exited while named tests ran or after they passed. Output starts with the cause, so an older checker reads it too; a cause is cut to 1 KB. Tests (1901/AC4), from real go1.27.3 go test -json captures of ten cases (panic, timeout, timeout with a 16 KB dump, build failure, os.Exit, SIGKILL, TestMain panic and exit after PASS, race in a test and in TestMain), each written first and seen to fail: among them TestALoggedPanicIsNotTheCause and TestOnlyGosExactFormsAreSummaryOrCause. Checked: gofmt, go vet with and without -tags integration, the unit suite. A try passed on 663f3de9 (try-1792939128188902515). The operator decided no checks run during the recovery (2026-10-25 15:53, issue 1945 note 27). Works with the old and new checker either way; the checker's half is mesh-delivery fix/1901-package-cause. Known: the clip can still put the cause ahead of the 4096-byte tail, up to about 1 KB over; the checker enforces 4096 itself. Reviewed-by: reviewer-1901b@shanks at 155124b59af47b7bbe0418a586c5e0053697d7e7
mesh-tools added 3 commits 2026-10-25 14:59:32 +00:00
A try of mesh-controller kept 'PASS' as its only failure: the package's test
program stopped after printing PASS and the package-level failure took its
first line. Now a failure that is not one test's assertion names the tests that
were running and carries the panic line (a timeout's with its running tests),
a signal or fatal error line, a build's first error, or words saying the
program exited during which tests or after they passed; go test's summary lines
are never kept. Tests from captured go test -json of eight real failures
(1901/AC4).
mesh-controller's try was worded 'PASS' again because the race detector
reported after the tests passed and the program exited 66. The cause is now
the race: its access, the frame that made it and where its goroutine was
created, instead of PASS or testing's generic 'race detected during execution
of test'. Tests from captured go test -race -json (1901/AC4).
mesh-build-go: a cause is the runtime's line at column 0, and only go's exact summary lines are dropped (issue 1901, review round 1)
mesh/check pass 155124b59af4 on f27f4c8cd58c | unit 2015 run, 2883 kept, 5 skipped | integration 2037 run, 2978 kept, 9 skipped | over bound: unit, in…
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/delivery-group group fix/1901-package-cause held: a member is held: novox/mesh-catalog@155124b59af4 (merged without a passing check: only a person decides…
155124b59a
An indented log line of another running test that held 'panic:' won over the
real timeout panic, since the lines were trimmed before matching. Go prints
the runtime's lines at column 0; a test's log is indented.
Author
Member

Delivery novox/mesh-catalog@155124b59af4 — held since 2026-10-25T15:07:42Z

Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check.

Source — source.main moved to novox/mesh-catalog@f27f4c8cd5. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/1901-package-cause: novox/mesh-catalog@155124b59a, novox/mesh-delivery@dd9138310c

Transitions

  • 2026-10-25 14:59 (new) → proposed (announced): novox/mesh-catalog#477's head announced
  • 2026-10-25 15:07 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@155124b59af4` — **held** since 2026-10-25T15:07:42Z Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check. **Source** — source.main moved to novox/mesh-catalog@f27f4c8cd58c. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1901-package-cause`: novox/mesh-catalog@155124b59af4, novox/mesh-delivery@dd9138310c48 **Transitions** - 2026-10-25 14:59 (new) → proposed (announced): novox/mesh-catalog#477's head announced - 2026-10-25 15:07 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
jschoubben merged commit f27f4c8cd5 into main 2026-10-25 15:07:41 +00:00
jschoubben deleted branch fix/1901-package-cause 2026-10-25 15:07:41 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#477