atlas-iac/testing/tests/test_hermes_handoff_mutation_gate.py

52 lines
1.5 KiB
Python
Raw Normal View History

"""Tests for the deterministic Hermes handoff mutation gate."""
from __future__ import annotations
from pathlib import Path
from testing.quality_handoff_mutation import Mutation, MutationReport, main, run_gate
ROOT = Path(__file__).parents[2]
def test_every_security_mutant_is_killed() -> None:
report = run_gate(ROOT)
assert report.issues == ()
assert report.score == 100.0
assert report.killed == report.total >= 9
def test_invalid_anchor_baseline_syntax_and_survivor_are_reported() -> None:
path = "hermes_handoff_model.py"
cases = (
Mutation("missing", path, "not present", "x", "pass"),
Mutation(
"baseline",
path,
"SCHEMA_VERSION = 1",
"SCHEMA_VERSION = 2",
"raise SystemExit(1)",
),
Mutation("syntax", path, "SCHEMA_VERSION = 1", "if", "pass"),
Mutation("survivor", path, "SCHEMA_VERSION = 1", "SCHEMA_VERSION = 2", "pass"),
)
report = run_gate(ROOT, cases)
assert report.killed == 0
assert len(report.issues) == 4
assert report.score == 0.0
def test_main_reports_a_perfect_score(capsys) -> None:
assert main() == 0
assert "9/9 (100.00%)" in capsys.readouterr().out
def test_main_reports_mutation_issues(monkeypatch, capsys) -> None:
monkeypatch.setattr(
"testing.quality_handoff_mutation.run_gate",
lambda _root: MutationReport(1, 0, ("survivor",)),
)
assert main() == 1
assert "survivor" in capsys.readouterr().out