test(accounting): a row skipped while its source is here exits 1 (H5, red)
The guard at the end of `main` asked whether the corpora named by the ARGUMENTS are available. Row 6 is SKIPPED precisely when none of them is, so the branch could never fire; PM read it as dead code and no test covered it. The question it meant to ask is about the machine: a corpus that is HERE and was pointed away from is a row that did not run, and with `CI=1` the gate then printed a qualified GREEN and exited 0. Two tests, so a guard that fires on everything fails too: with the default source present and the arguments pointing elsewhere the run exits 1 and names the row; with no corpus on the machine at all it exits 0, because nothing to measure is not a row that did not run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
d31ab73289
commit
253c4fb988
1 changed files with 33 additions and 0 deletions
|
|
@ -963,6 +963,39 @@ def test_a_unit_clean_in_only_one_of_the_two_builds_is_not_clean() -> None:
|
|||
assert gate.clean_in_every_run([[clean], [dirty]]) == 0
|
||||
|
||||
|
||||
def test_a_row_skipped_while_the_default_source_exists_exits_one(
|
||||
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
|
||||
) -> None:
|
||||
"""H5: the guard asked whether the corpora named by the ARGUMENTS are
|
||||
available -- and row 6 is SKIPPED precisely when none of them is, so the
|
||||
branch could never fire and no test covered it. The question it meant to
|
||||
ask is about the machine: a corpus that is HERE and was pointed away from
|
||||
is a row that did not run, and `CI=1` then printed a qualified GREEN and
|
||||
exited 0.
|
||||
|
||||
Measured against its own known-negative below, so a guard that fires on
|
||||
everything would not pass either."""
|
||||
present = tmp_path / "corpus.json"
|
||||
present.write_text("{}", encoding="utf-8")
|
||||
skipped = gate.Row(6, "real corpora", 0, 0, gate.SKIPPED, "not measured, source missing: x")
|
||||
monkeypatch.setattr(gate, "N200_DEFAULT", present)
|
||||
monkeypatch.setattr(gate, "evaluate", lambda **kwargs: [skipped])
|
||||
code = gate.main(["--r761", str(tmp_path / "absent"), "--n200", str(tmp_path / "absent.json")])
|
||||
assert code == 1
|
||||
assert "row 6 was skipped while its source exists" in capsys.readouterr().err
|
||||
|
||||
|
||||
def test_a_row_skipped_with_no_source_on_the_machine_exits_zero(
|
||||
tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
||||
) -> None:
|
||||
"""The known-negative: nothing to measure is not a row that did not run."""
|
||||
skipped = gate.Row(6, "real corpora", 0, 0, gate.SKIPPED, "not measured, source missing: x")
|
||||
monkeypatch.setattr(gate, "R761_DEFAULT", tmp_path / "absent")
|
||||
monkeypatch.setattr(gate, "N200_DEFAULT", tmp_path / "absent.json")
|
||||
monkeypatch.setattr(gate, "evaluate", lambda **kwargs: [skipped])
|
||||
assert gate.main([]) == 0
|
||||
|
||||
|
||||
def test_a_surviving_mutant_is_not_exit_zero() -> None:
|
||||
"""H4: the mutation harness returned `2 if errors else 0`, so a run that
|
||||
printed `killed 0 of 1` and named the survivor exited 0. PM measured it on
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue