Repository navigation
Highlights
- Mutants in never-executed files are reported as
noCoverage. A file whose
regions never ran used to drop out of the coverage map, so its mutants ran the
full test suite (211-280 s each on MutantKit itself) and were reported as
survived. They are now classifiednoCoveragewithout running any test. - Schemata covers more mutations. Operands made of calls, subscripts,
optional chaining, force unwraps, arithmetic and??are now lowered. On
MutantKit's own default-operator candidates the share that can be embedded
rose from 82.0% to 97.1%. Thestrongerprofile'snil-coalescing-fallback
operator now has a schemata lowerer too. - Confirmation rebuilds are faster. The crash and timeout confirmations reuse
pooled sandboxes underincrementalBuildinstead of a fresh sandbox each time
(build 10.3 s down to 3.7-6.6 s). execution-profilepreviews schemata. It samples the plan (up to 500
mutations) and shows how many would be embedded and how many would fall back.
Reports and diagnostics
- A run that reuses a cached coverage measurement no longer prints "Coverage was
not measured". The baseline record now carriescoverageReused. - The coverage cache key no longer includes the raw bytes of the root
mutantkit.yml; the parsed configuration already feeds the key.
Fixes
- Several tests that depended on fixed sleeps or short waits, on process
ownership and on zombie handling failed under load; they are now robust. - SwiftFormat's
repeatedGuardrule is disabled because it conflicts with
SwiftLint'sline_length, andScripts/preflight.shmatches CI.
Known issue
- With
selectCoveringTests, a mutant killed only by a parameterized Swift
Testing test can be reported asinfrastructureFailure("failure outside the
selection") instead of killed. It is excluded from the score rather than
counted, so scores are understated, never overstated.
What's Changed
Full Changelog: v1.3.1...v1.3.2