Expand description
Mutation testing for Rust (unit mutation --language rust, #201) — the rung
above coverage. A test that runs a line still passes if you delete its
assertions; a surviving mutant proves it. This module wraps
cargo-mutants: it runs the engine,
reads its outcomes.json, and reports the surviving mutants the suite failed
to catch.
The gate is binary, not a percentage (equivalent mutants make a fixed score
unreachable, and a score isn’t comparable across engines) and on by default: any
un-exempted surviving mutant is a finding. This module stays a pure measurement —
measure_rust returns the survivors and unexplained_survivors is the pure
core over a parsed report; the CLI layer turns a non-empty result into the failure.
Diff-scoping (--base) is delegated to cargo-mutants’ own --in-diff: the
<base>...HEAD diff is written out and passed through, so only mutants on changed
lines are tested (“no unexplained surviving mutant on the lines you touched”).
Structs§
- LineCol
- A line/column position; only the line is read.
- Mutant
Info - The mutant a scenario describes, pared to the location + description the report
needs. cargo-mutants also carries
function,genre,package,replacement; those are ignored. - Mutant
Outcome - One scenario’s outcome.
summaryis cargo-mutants’ result word —Successfor the unmutated baseline,CaughtMutant/MissedMutant(andTimeout/Unviable) for each mutant. - Mutants
Report - A cargo-mutants
outcomes.jsonexport, pared to what the rule reads. Unmodeled fields (total_mutants,caught, timings, …) are ignored. - Span
- A source span; only the start line is read.
- Survivor
- A surviving mutant — a mutation the unit suite ran but failed to catch.
Enums§
- Scenario
- The scenario a result came from: the unmutated baseline, or one mutant. Matches
cargo-mutants’ externally-tagged JSON (
"Baseline"vs{"Mutant": {…}}).
Functions§
- measure_
rust - Run cargo-mutants over the crate at
rootand return its un-exempted survivors. - parse_
mutants_ report - Parse a cargo-mutants
outcomes.jsonexport. - unexplained_
survivors - The surviving mutants not lifted by a
mutationexemption — the rule’s findings.