additional_cargo_args = ["--all-features"] examine_globs = ["units/src/**/*.rs", "primitives/src/**/*.rs"] exclude_globs = [ "units/src/amount/verification.rs" # kani tests ] exclude_re = [ "impl Arbitrary", "impl Debug", "impl fmt::Debug", ".*Error", "deserialize", # Skip serde mutation tests "Iterator", # Mutating operations in an iterator can result in an infinite loop # ----------------------------------Crate-specific exclusions---------------------------------- # Units # src/amount/mod.rs "parse_signed_to_satoshi", # Can't kill all mutants since there is no denomination smaller than Satoshi "fmt_satoshi_in", # Related to formatting/display "dec_width", # Replacing num /= 10 with num %=10 in a loop causes a timeout due to infinite loop # src/locktime/relative.rs "Time::to_consensus_u32", # Mutant from replacing | with ^, this returns the same value since the XOR is taken against the u16 with an all-zero bitmask "FeeRate::fee_vb", # Deprecated "FeeRate::fee_wu", # Deprecated "SignedAmount::checked_abs", # Deprecated "NumberOfBlocks::value", # Deprecated "NumberOf512Seconds::to_consensus_u32", # Deprecated "MedianTimePast::to_consensus_u32", # Deprecated "Height::to_consensus_u32", # Deprecated # primitives "Sequence::from_512_second_intervals", # Mutant from replacing | with ^, this returns the same value since the XOR is taken against the u16 with an all-zero bitmask "Opcode::classify", # Not possible to kill all mutants without individually checking every opcode classification "Block::cached_witness_root", # Skip getters "Block::transactions", # Skip getters "Script::to_bytes", # Deprecated "decode_cursor", # Mutating operations in decode_cursor can result in an infinite loop "fmt_debug", # Mutants from formatting/display changes "fmt_debug_pretty", # Mutants from formatting/display changes ]