Runs exactly the tests listed in test/passing_tests.json.
Those tests passed once, so any failure here is a regression rather than a
missing feature. The conformance suites are excluded from mix test by
default; this task includes the tags its registry entries need.
Usage
mix test.regression
mix test.regression --registry test/passing_tests.jsonOptions
--registry- registry to run, defaults totest/passing_tests.json
Failures print ExUnit's own output, unedited. Growing the registry is
mix test.baseline's job - this task never writes to it.
A registry entry that matches no file on disk fails the run. Skipping it would silently shrink the ratchet, which is the one thing it exists to prevent.
A passing run also prints a per-corpus coverage block: for each conformance
suite, ratcheted/total (percent%) against the suite's emitted corpus
files. The numerator is exactly the registry entries this run verified -
unlike mix test.baseline's scan, there are no newly-passing files to add
in. A failing run prints no such block; ExUnit's own output is the whole
story then.
Summary
Functions
Runs the ratchet and reports the outcome instead of halting.
opts[:runner] replaces the mix test shell-out with a function of the
argument list returning an exit status, opts[:root] moves the corpus scan
behind the coverage block to a fixture tree. Both exist so the tests can
drive this without spawning a nested mix test.
Environment for the spawned mix test.
The ratchet runs concurrently with mix quality's own Tests stage, in the
same working directory, over largely the same modules. Scratch directories
(Statifier.TmpDir) are collision-proof by construction - root/0 always
ends in a System.pid() segment, so the two runs cannot land on the same
path even by accident. STATIFIER_TMP_ROOT is set here anyway, not
for isolation but so the ratchet's pid-scoped tree lands under a
recognizable tmp/regression/<pid>/ rather than an anonymous tmp/<pid>/
indistinguishable from the Tests stage's own.