Releases: sourcefrog/cargo-mutants
v25.2.2
-
Changed: The mutant name of "replace match guard" mutations now includes the original match guard, for example
replace match guard path.path.is_ident("str") with true in type_replacements
. Similarly, the "delete match arm" mutation includes the pattern of the arm, for exampledelete match arm BinOp::BitOr(_) in ...
. -
Internal: Automatically publish cargo-mutants to crates.io from GitHub Actions.
v25.2.2-pre2
- Release packages from a github environment for added security.
v25.2.2-pre0
- Changed: The mutant name of "replace match guard" mutations now includes the original match guard, for example
replace match guard path.path.is_ident("str") with true in type_replacements
. Similarly, the "delete match arm" mutation includes the pattern of the arm, for exampledelete match arm BinOp::BitOr(_) in ...
.
v25.2.1
- Fixed: Updated to
syn
2.0.104, which understands new Rust syntax including impl trait precise capturing.
v25.2.0
-
New:
gitignore
config key in.cargo/mutants.toml
to control whether.gitignore
patterns are respected when copying source trees, corresponding to--gitignore
. -
Changed: The mutant name for mutations of
match
statements and guard expressions now includes the enclosing function name, for examplereplace match guard with true in find_path_attribute
.
v25.1.0
-
Changed: The
--gitignore
option now defaults tofalse
, meaning.gitignore
patterns are no longer respected when copying source trees by default. The/target
directory is still excluded by default through explicit filtering. To restore the previous behavior, use--gitignore=true
. -
New: Mutate
>
to>=
and<
to<=
. -
Changed: Mutate
&T
toBox::leak(Box::new(...))
, instead of a reference to a value, so that mutants aren't unviable due to returning references to temporary values. -
New:
--copy-target
option allows copying the/target
directory to build directories. By default, the target directory is excluded to avoid copying large build artifacts, but--copy-target=true
can be used if tests depend on existing build artifacts. -
New: Feature-related options can now be configured in
.cargo/mutants.toml
:features
,all_features
, andno_default_features
. Command line arguments take precedence over config file settings for boolean options, while features from both sources are combined. -
New: Produce a json schema for the config file with
--emit-schema=config
to support schema-guided editing. The schema has been proposed to SchemaStore so many editors should in future support it automatically. -
New: The config file path can be specified with the
--config
option, overriding the default of.cargo/mutants.toml
. (The pre-existing--no-config
option turns it off.)
v25.0.1
-
New: Additional mutation patterns: delete
match
arms if there is a default arm, and replaceif
guards from match arms withtrue
andfalse
. -
Changed: Show more type parameters in mutant names, like
impl From<&str> for Foo
rather thanimpl From for Foo
. -
Fixed: Support crates that use a non-default Cargo registry. Previously,
cargo metadata
failed with "registry index was not found." -
Improved: Warn if
--jobs
is set higher than 8, which is likely to be too high. -
Improved: Don't warn about expected/harmless exit codes from Nextest.
v25.0.1-pre3
- Fixed: Build arm64 binaries for macOS.
v25.0.1-pre2
- Fixed: Build binaries into releases.
cargo-mutants 25.0.0
-
Better estimation of time remaining, based on the time taken to test mutants so far, excluding the time for the baseline.
-
New:
--copy-vcs
option and config option will copy.git
and other VCS directories, to accommodate trees whose tests depend on the contents or presence of the VCS directory. -
New: Add
.jj
to the list of known VCS directories. These are excluded by default when copying the tree, but can be included using--copy-vcs=true
. -
Fixed:
cargo --package
options now include the version number of the targeted package, like[email protected]
. This avoids cargo failing with an error that the package name is ambiguous in trees whose dependencies include multiple versions of one of the packages being tested.