You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(mutation): address fresh oracle review blockers and mediums
Blockers
- filter parity: pass materialized baseline filter (filter.args().clone())
into MutationRunConfig so positional 'forge test <path>' and --rerun
reach mutant runs too; raw self.filter dropped them silently
- bail when baseline matched zero tests; without it every compileable
mutant was reported as 'Alive'
- negative literal mutation: add OwnedLiteral::NegatedNumber(U256)
formatted as '-{val}'; the old Number(-*val) wrapped via two's
complement and produced wrong-source mutants
- mutator test harness: wrap snippets in valid Solidity, panic on parse
failure, and check emitted replacement text. Fixed 6 stale test
expectations and 1 unmatched delegate-pattern case the old vacuous
harness was hiding
Mediums
- survived-span resume: load retrieve_survived_spans BEFORE mutant
generation/cached load and filter cached mutants through
should_skip_span so cross-run adaptive skipping actually works
- runtime context digest: hash the full serialized EvmOpts (networks,
env, gas-limit toggles, fork, sender, balance, ...) instead of a
hand-picked 4-field subset that missed several mutation-affecting
knobs
- deterministic output: BTreeMap for JSON survived_mutants with sorted
entries; reporter sorts survived list by (path, line, col, span,
mutation); persisted results_vec sorted by span
- --mutate-contract: intersect with explicit --mutate <paths> instead of
silently overriding them; explicit paths are now respected
- workspace: copy 'script/' when present and distinct from src/test so
projects that import script-side helpers don't see false Invalid
mutants
Amp-Thread-ID: https://ampcode.com/threads/T-019e4567-e7ca-717e-bcc0-bb67a3667c4d
Co-authored-by: Amp <amp@ampcode.com>
0 commit comments