sydtest-mutation-plugin 0.5.0.0 → 0.5.1.0
raw patch · 3 files changed
+21/−7 lines, 3 files
Files
- CHANGELOG.md +8/−0
- src/Test/Syd/Mutation/Plugin/Instrument.hs +12/−6
- sydtest-mutation-plugin.cabal +1/−1
CHANGELOG.md view
@@ -1,5 +1,13 @@ # Changelog +## [0.5.1.0] - 2026-10-13++### Changed++* A control (no-op) mutation is inserted at every module's first mutation+ site and then every hundred mutations, rather than every twelve.++ ## [0.5.0.0] - 2026-09-11 ### Added
src/Test/Syd/Mutation/Plugin/Instrument.hs view
@@ -400,7 +400,11 @@ emptyInstrState = InstrState { instrLocalDisableHits = Map.empty,- instrSinceControl = 0,+ -- Due immediately, so the first mutation site of every module is also a+ -- control. Without this a module needs 'controlInterval' mutations of+ -- its own to get one, which at the cadence that interval sets means a+ -- project of small modules gets no canary at all.+ instrSinceControl = controlInterval, instrControlSeq = 0 } @@ -409,12 +413,14 @@ -- harness for false kills, and even a handful across a run catches a systemic -- flaky\/nondeterministic suite - more just adds overhead and report noise. ----- There is no per-module floor: a module (compilation unit) with fewer than--- 'controlInterval' real mutations gets no control. Any real mutation-testing--- target has far more than this many mutations overall, so a run always ends up--- with controls; only toy builds get none, and those do not need the canary.+-- Sparser than a real mutation would warrant, because a control cannot stop at+-- the test that kills it: it is expected to survive, so its child runs every+-- covering test it is given.+--+-- Every module gets one regardless, at its first mutation site, since the+-- count is per module ('emptyInstrState'). controlInterval :: Int-controlInterval = 12+controlInterval = 100 type InstrM = WriterT [MutationGroup] (StateT InstrState (ReaderT InstrumentEnv TcM))
sydtest-mutation-plugin.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: sydtest-mutation-plugin-version: 0.5.0.0+version: 0.5.1.0 synopsis: GHC plugin that instruments code for sydtest's mutation testing description: A GHC source plugin that instruments code under test with the coverage and mutation hooks that sydtest's mutation testing infrastructure needs. See https://github.com/NorfairKing/sydtest#readme for more information. category: Testing