test(silent-eval): pin the three bugs, and prove the pins actually bite (#112)
The previous commit fixed three bugs in the tool whose entire job is catching
failures that make no noise. That makes its own failure mode the worst one
available: saying OK about a track that does not work, or BROKEN about a track
that does. It was doing BOTH, corpus-wide — and it stayed hidden because the 13
setlist tracks, the only ones anyone ever pointed it at, happened to dodge all
three.
Seven tests, all structural — no ghc, no rig, 0.06s:
1. a column-0 `$` is a CONTINUATION (PLN's dominant corpus style), plus a
guard that indenting does not FLATTEN relative structure below it, plus
one for the ordinary inline style — which gets a test precisely because
dodging the bug is what let the bug live.
2. a non-zero exit with no SILENT line is a CRASH, and its stderr survives
into the detail, because stderr is the only thing that says why.
3. the exit code answers "is anything wrong", never "is anything silent".
MUTATION-CHECKED, because green tests on their own prove nothing. Each fix was
individually reverted and the suite re-run:
remove the continuation indent -> test_dollar_at_column_zero_is_indented FAILS
key the return to silence only -> test_exit_code_is_not_keyed_to_silence_alone FAILS
both restored -> 7 passed
Test 3 is the one that matters. When crashes were split out of the silence
count, the return value was briefly left keyed to `silent_only`, so a corpus
where every single track failed to compile would have printed "OK — every
declared orbit emits events" and exited 0. That is a false green from the gate,
and a false green here is indistinguishable from a working set right up until
the downbeat.
Full suite: 229 passed.
Showing
tools/tests/test_silent_eval.py
0 → 100644
Please
register
or
sign in
to comment