Releases: jakubsob/muttest
Releases · jakubsob/muttest
Release list
v0.3.0
- ✨ New
JSONMutationReporterwrites 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 aJSONMutationReporterfile. - ✨ New
MultiReporterfans reporter events out to several reporters at once, e.g. a liveProgressMutationReporteralongside aJSONMutationReporter. - ❗️ 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 separateno coveragecategory and excluded from the score, so untested code no longer looks like escaped mutants. - ✨
PackageCopyStrategygained asymlinkargument. WhenTRUE, 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 largeinst//data/). Defaults toFALSE; unsafe if the test suite writes into the package's own directories. - 🐛
FileTestStrategynow matches test files by exact name instead of an unanchored regex, so a source file likemod.Rno longer runstest-model.Rand filenames with regex metacharacters are handled correctly. - 🐛 Added missing
digestandtoolsto Imports.
v0.3.0-r.c.2
- Fixed CRAN check with invalid URL
v0.3.0-r.c.1
- ✨ New
JSONMutationReporterwrites 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 aJSONMutationReporterfile. - ✨ New
MultiReporterfans reporter events out to several reporters at once, e.g. a liveProgressMutationReporteralongside aJSONMutationReporter. - ❗️ 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 separateno coveragecategory and excluded from the score, so untested code no longer looks like escaped mutants. - ✨
PackageCopyStrategygained asymlinkargument. WhenTRUE, 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 largeinst//data/). Defaults toFALSE; unsafe if the test suite writes into the package's own directories. - 🐛
FileTestStrategynow matches test files by exact name instead of an unanchored regex, so a source file likemod.Rno longer runstest-model.Rand filenames with regex metacharacters are handled correctly. - 🐛 Added missing
digestandtoolsto Imports.
v0.2.1
v0.2.0
muttest 0.2.0
- ❗️ Renamed
plan()tomuttest_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()— flipsTRUE/FALSEandT/F.na_literals()— swapsNA,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.
- ✨
ProgressMutationReporternow reports survived mutants. - ✨ Expose
Mutatorbase 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.
v0.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:PackageCopyStrategyimplemented for copying package files.
- ✨ Control test execution for each mutant with
TestStrategy:FullTestStrategyfor running all tests for each mutant.FileTestStrategyfor running only test files matching mutant files.
- ✨ See test results with
MutationReporter.ProgressMutationReporterfor printing progress to the console.