Releases: sourcefrog/cargo-mutants
v23.11.2
-
Changed: If
--file
or--exclude
are set on the command line, then they replace the corresponding config file options. Similarly, if--re
is given then theexamine_re
config key is ignored, and if--exclude-re
is given thenexclude_regex
is ignored. (Previously the values were combined.) This makes it easier to use the command line to test files or mutants that are normally not tested. -
Improved: By default, files matching gitignore patterns (including in parent directories, per-user configuration, and
info/exclude
) are excluded from copying to temporary build directories. This should improve performance in some large trees with many files that are not part of the build. This behavior can be turned off with--gitignore=false
. -
Improved: Run
cargo metadata
with--no-deps
, so that it doesn't download and compute dependency information, which can save time in some situations. -
Added: Alternative aliases for command line options, so you don't need to remember if it's "regex" or "re":
--regex
,--examine-re
,--examine-regex
(all for names to include) and--exclude-regex
. -
Added: Accept
--manifest-path
as an alternative to-d
, for consistency with other cargo commands.
v23.11.1
- New
--in-diff FILE
option tests only mutants that are in the diff from the given file. This is useful to avoid testing mutants from code that has not changed, either locally or in CI.
v23.11.0
-
Changed:
cargo mutants
now tries to match the behavior ofcargo test
when run within a workspace. If run in a package directory, it tests only that package. If run in a workspace that is not a package (a "virtual workspace"), it tests the configured default packages, or otherwise all packages. This can all be overridden with the--package
or--workspace
options. -
New: generate key-value map values from types like
BTreeMap<String, Vec<u8>>
. -
Changed: Send trace messages to stderr rather stdout, in part so that it won't pollute json output.
v23.10.0
- The baseline test (with no mutants) now tests only the packages in which mutants will be generated, subject to any file or regex filters. This should both make baseline tests faster, and allow testing workspaces in which some packages have non-hermetic tests.
cargo-mutants 23.9.1
Lots more mutation patterns!
-
Mutate the known collection types
BinaryHeap
,BTreeSet
,HashSet
,LinkedList
, andVecDeque
to generate empty and one-element collections usingT::new()
andT::from_iter(..)
. -
Mutate known container types like
Arc
,Box
,Cell
,Mutex
,Rc
,RefCell
intoT::new(a)
. -
Mutate unknown types that look like containers or collections
T<A>
orT<'a, A>'
and try to construct them from anA
withT::from_iter
,T::new
, andT::from
. -
Minimum Rust version updated to 1.70.
-
Mutate
Cow<'_, T>
intoOwned
andBorrowed
variants. -
Mutate functions returning
&[T]
and&mut [T]
to return leaked vecs of values. -
Mutate
(A, B, C, ...)
into the product of all replacements fora, b, c, ...
-
The combination of options
--list --diff --json
is now supported, and emits adiff
key in the JSON. -
Mutate
-> impl Iterator<Item = A>
to produce empty and one-element iterators of the item type.
cargo-mutants 23.9.0
Live from http://rustconf.com/
- Fixed a bug causing an assertion failure when cargo-mutants was run from a subdirectory of a workspace. Thanks to @adamchalmers!
- Generate
HttpResponse::Ok().finish()
as a mutation of an ActixHttpResponse
.
cargo-mutants 23.6.0
An exciting release that adds a lot more power to generate viable mutations of functions returning more complex types.
-
Generate
Box::leak(Box::new(...))
as a mutation of functions returning&mut
. -
Add a concept of mutant "genre", which is included in the json listing of mutants. The only genre today is
FnValue
, in which a function body is replaced by a value. This will in future allow filtering by genre. -
Recurse into return types, so that for example
Result<bool>
can generateOk(true)
andOk(false)
, andSome<T>
generatesNone
and every generated value ofT
. Similarly forBox<T>
, andVec<T>
. -
Generate specific values for integers:
[0, 1]
for unsigned integers,[0, 1, -1]
for signed integers;[1]
for NonZero unsigned integers and[1, -1]
for NonZero signed integers. -
Generate specific values for floats:
[0.0, 1.0, -1.0]
. -
Generate (fixed-length) array values, like
[0; 256], [1; 256]
using every recursively generated value for the element type.
cargo-mutants 23.5.0
"Pickled crab"
-
cargo mutants
can now successfully test packages that transitively depend on a different version of themselves, such asitertools
. Previously, cargo-mutants used the cargo--package
option, which is ambiguous in this case, and now it uses--manifest-path
instead. #117 -
Mutate functions returning
&'_ str
(whether a lifetime is named or not) to return"xyzzy"
and""
. -
Switch to CalVer numbering.
cargo-mutants 1.2.3
-
New
--error
option, to cause functions returningResult
to be mutated to return the specified error. -
New
--no-config
option, to disable reading.cargo/mutants.toml
. -
Mutate functions returning
String
toString::new()
rather than"".into()
: same result but a bit more idiomatic. -
New
--leak-dirs
option, for debugging cargo-mutants. -
Update to syn 2.0, adding support for new Rust syntax.
-
Minimum supported Rust version increased to 1.65 due to changes in dependencies.
cargo-mutants-1.2.2
-
Don't mutate
unsafe
fns. -
Don't mutate functions that never return (i.e.
-> !
). -
Minimum supported Rust version increased to 1.64 due to changes in dependencies.
-
Some command-line options can now also be configured through environment variables:
CARGO_MUTANTS_JOBS
,CARGO_MUTANTS_TRACE_LEVEL
. -
New command line option
--minimum-test-timeout
and config file variableminimum_test_timeout
join existing environment variableCARGO_MUTANTS_MINIMUM_TEST_TIMEOUT
, to allow boosting the minimum, especially for test environments with poor or uneven throughput. -
Changed: Renamed fields in
outcomes.json
fromcargo_result
toprocess_status
and fromcommand
toargv
. -
Warn if no mutants were generated or if all mutants were unviable.