-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmutants.toml
More file actions
69 lines (60 loc) · 2.38 KB
/
mutants.toml
File metadata and controls
69 lines (60 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# cargo-mutants configuration
# https://mutants.rs/
#
# This file was removed in commit 44a02ae (Apr 2026) because the hooks
# and plugins integration tests tripped Linux `ETXTBSY` races under
# cargo-mutants' parallel worker fleet, making every baseline run
# flaky and blocking mutation testing entirely. The ETXTBSY race is
# an intra-process `posix_spawn` fd-inheritance bug
# (rust-lang/rust#114554) that was masked but never fixed.
#
# The race is now handled in production code at
# `crate::io::spawn_with_etxtbsy_retry`, which the hook runner and
# plugin manager both route through. Mutation testing is therefore
# re-enabled — this file was restored from the pre-removal revision
# and is kept in sync with the shape of the current test suite.
#
# If mutation testing flakes on `ETXTBSY` again in the future, do not
# remove this file. Investigate whether the retry wrapper is still
# wired into every subprocess-spawning code path; flaking here is a
# signal that a new spawn site skipped the wrapper.
# Timeout for each mutant test run (seconds)
timeout = 60
# Timeout multiplier for debug builds
build_timeout_multiplier = 2
# Number of parallel jobs (0 = use all CPUs)
jobs = 0
# Continue testing other mutants after one fails
continue_after_failure = true
# Shuffle mutants for better parallelism
shuffle = true
# Minimum test timeout (seconds)
minimum_test_timeout = 20
# Exclude files that don't benefit from mutation testing
exclude_globs = [
"src/main.rs", # Entry point only
"tests/**", # Test code itself
"xtask/**", # Build automation
"benches/**", # Benchmarks
"examples/**", # Examples
]
# Exclude specific functions by regex
exclude_re = [
"^impl.*Display", # Display implementations
"^impl.*Debug", # Debug implementations
"^impl.*Default", # Default implementations
"^impl.*From<", # From trait implementations
"^impl.*Error", # Error trait implementations
"^main$", # main function
"^new$", # Simple constructors
"::log_", # Logging functions
"::trace_", # Tracing functions
]
# Mutant error values to use when replacing return values
[error_values]
# For Option<T>
"Option" = ["None"]
# For Result<T, E>
"Result" = ["Err(Default::default())"]
# For bool
"bool" = ["false", "true"]