muttest 0.3.0
- ✨ New
JSONMutationReporter writes a report conforming
to the mutation-testing-elements schema,
a cross-language standard shared by StrykerJS/.NET/Scala — so muttest
output can be fed to any schema-compatible tooling.
- ✨ New
report() renders a self-contained,
source-annotated HTML report (overall score, per-file breakdown,
per-line mutant diffs, status filtering, keyboard navigation) from a
JSONMutationReporter file.
- ✨ New
MultiReporter fans reporter events out to
several reporters at once, e.g. a live
ProgressMutationReporter alongside a
JSONMutationReporter.
- ❗️ A mutant that makes tests error (rather than fail an
expectation) is now scored as killed, matching PIT/Stryker/mutmut.
Previously it was counted as survived.
- ❗️ Mutants with no test coverage (no matching test file under
FileTestStrategy) are now reported as a separate
no coverage category and excluded from the score, so
untested code no longer looks like escaped mutants.
- ✨
PackageCopyStrategy gained a symlink
argument. When TRUE, only the mutated file’s top-level
directory is copied and everything else is symlinked to the original,
avoiding a full project copy per mutant (helpful for packages with large
inst//data/). Defaults to FALSE;
unsafe if the test suite writes into the package’s own directories.
- 🐛
FileTestStrategy now matches test files by exact
name instead of an unanchored regex, so a source file like
mod.R no longer runs test-model.R and
filenames with regex metacharacters are handled correctly.
- 🐛 Added missing
digest and tools to
Imports.
muttest 0.2.1
- Update treesitter queries to work with treesitter >= 1.3.0.
muttest 0.2.0
- ❗️ Renamed
plan() to muttest_plan().
- ✨ Add new mutators:
boolean_literal(), na_literal() — literal
replacement mutators.
negate_condition(),
remove_condition_negation() — condition mutators.
numeric_increment(), numeric_decrement(),
index_increment(), index_decrement() —
increment/decrement mutators.
string_empty(), string_fill() — string
mutators.
call_name() — call name mutator.
remove_negation() — unary negation mutator.
replace_return_value() — return value mutator.
delete_statement() — removes assignments and standalone
calls one at a time to catch untested side effects and dead
assignments.
- ✨ Add preset collections for all major mutator groups:
boolean_literals() — flips
TRUE/FALSE and
T/F.
na_literals() — swaps NA,
NULL, and typed NA variants.
numeric_literals() — increments and decrements numeric
constants.
index_mutations() — shifts subscript indices up and
down by one.
string_literals() — empties non-empty strings and fills
empty ones.
condition_mutations() — negates conditions and removes
existing negations.
arithmetic_operators() — mutates arithmetic operators
(+, -, *, /,
^, %%, %/%).
comparison_operators() — mutates comparison operators
(<, >, <=,
>=, ==, !=).
logical_operators() — mutates logical operators
(&, |, &&,
||).
- ✨ Mutators are now parametrized and accept configuration
arguments.
- ✨
ProgressMutationReporter now reports survived
mutants.
- ✨ Expose
Mutator base class for building custom
mutators.
- ✨
muttest() supports parallel execution of
mutants.
- ✨
muttest() supports per-mutant timeouts to avoid
hanging test runs.
- 🥅 Improved error handling when test execution fails.
muttest 0.1.0
- ✨ Create a testing plan with
plan.
- ✨ Run mutation testing with
muttest.
- ✨ Support mutating operators with
operator.
- ✨ Control copying project to temporary directory with
CopyStrategy:
PackageCopyStrategy implemented for copying package
files.
- ✨ Control test execution for each mutant with
TestStrategy:
FullTestStrategy for running all tests for each
mutant.
FileTestStrategy for running only test files matching
mutant files.
- ✨ See test results with
MutationReporter.
ProgressMutationReporter for printing progress to the
console.