Repository navigation
v0.12.1 — one erroring test no longer turns every run into a full recording
One erroring test no longer turns every run into a full recording
PHPUnit exits 2 as soon as one test errors, for example with an uncaught exception or a missing table, and 1 for a failure. phpunit-replay counted only 0 and 1 as a pass that ran to the end. A record with a single erroring test therefore saved its results without a baseline. The next pass found no cached baseline and recorded the whole suite again, and so did every pass after it, for as long as that test kept erroring.
On a real application, three erroring tests in one file were enough to turn a no-change run into a full recording of 10,957 tests. record gave no hint of it, because it still printed baseline <branch>@<sha> for a baseline it had not saved.
What changed
- An error is an outcome, like a failure. A pass that exits 0, 1 or 2 now counts as complete. The erroring test is recorded, and it re-runs on the next pass like any failure. Only a run that stopped early (aborted or truncated) or never finished (a crash or a signal) is incomplete. The in-process path never had this problem.
recordonly names a baseline it saved. When a pass finalizes no baseline, the summary line leaves out the baseline segment instead of showing HEAD. That happens with a CI run without--allow-ci-baseline, or with an aborted pass.
Nothing is invalidated. Content keys, stamps, fingerprints and the remote layout are unchanged.