Releases: sourcefrog/cargo-mutants
cargo-mutants 0.2.9
-
Faster:
cargo mutants
no longer runscargo check
before building, in cases where the build products are wanted or tests will be run. This saves a significant amount of work in build phases; in some treescargo mutants
is now 30% faster. (In trees where most of the time is spent running tests the effect will be less.) -
Fixed: Open log files in append mode to fix messages from other processes occasionally being partly overwritten.
-
Improved:
cargo mutants
should now give useful results in packages that use#![deny(unused)]
or other mechanisms to reject warnings. Mutated functions often ignore some parameters, which would previously be rejected by this configuration without proving anything interesting about test coverage. Now,--cap-lints=allow
is passed inRUSTFLAGS
while building mutants, so that they're not falsely rejected and the tests can be exercised. -
Improved: The build dir name includes the root package name.
-
Improved: The progress bar shows more information.
-
Improved: The final message shows how many mutants were tested and how long it took.
cargo-mutants 0.2.8
-
New: Summarize the overall number of mutants generated, caught, missed, etc, at the end.
-
Fixed: Works properly with crates that have relative
path
dependencies inCargo.toml
or.cargo/config.toml
, by rewriting them to absolute paths in the scratch directory.
cargo-mutants-0.2.7
-
New: You can skip functions by adding
#[cfg_attr(test, mutants::skip)
, in which case themutants
crate can be only adev-dependency
. -
Improved: Don't generate pointless mutations of functions with an empty body (ignoring comments.)
-
Improved: Remove extra whitespace from the display of function names and return types: the new formatting is closer to the spacing used in idiomatic Rust.
-
Improved: Show the last line of compiler/test output while running builds, so that it's more clear where time is being spent.
-
Docs: Instructions on how to check for missed mutants from CI.
cargo-mutants-0.2.6
-
Improved: Find source files by looking at
cargo metadata
output, rather than assuming they're insrc/**/*.rs
. This makescargo mutants
work properly on trees where it previously failed to find the source. -
New
--version
option. -
New: Write a
lock.json
into themutants.out
directory including the start timestamp, cargo-mutants version, hostname and username. Take a lock on this file whilecargo mutants
is running, so that it doesn't crash or get confused if two tasks try to write to the same directory at the same time. -
New: Restored a
--list-files
option. -
Changed: Error if no mutants are generated, which probably indicates a bug or configuration error(?)
cargo-mutants-0.2.5
-
New
--file
command line option to mutate only functions in source files matching a glob. -
Improved: Don't attempt to mutate functions called
new
or implementations ofDefault
. cargo-mutants can not yet generate good mutations for these so they are generally false positives. -
Improved: Better display of
<impl Foo for Bar>::foo
and similar type paths. -
New:
--output
directory to writemutants.out
somewhere other than the source directory.
cargo-mutants-0.2.4
-
Fix: Ignore errors setting file mtimes during copies, which can cause failures on Windows if some files are readonly.
-
Fix: Log file names now include only the source file relative path, the line number, and a counter, so they are shorter, and shouldn't cause problems on filesystems with length limits.
-
Change: version-control directories like
.git
are not copied with the source tree: they should have no effect on the build, so copying them is just a waste. -
Changed/improved json logs in
mutants.out
:-
Show durations as fractional seconds.
-
Outcomes include a "summary" field.
-
cargo-mutants 0.2.3
-
Switch from Indicatif to Nutmeg to draw progress bars and output. This fixes a bug where terminal output line-wraps badly, and adds a projection for the total estimated time to completion.
-
Change: Mutants are now tested in random order by default, so that repeated runs are more likely to surface interesting new findings early, rather than repeating previous results. The previous behavior of testing mutants in the deterministic order they're encountered in the tree can be restored with
--no-shuffle
.
cargo-mutants 0.2.2
-
The progress bar now shows which mutant is being tested out of how many total.
-
The automatic timeout is now set to the minimum of 20 seconds, or 5x the time of the tests in a baseline tree, to reduce the incidence of false timeouts on machines with variable throughput.
-
Ctrl-c (or
SIGINT
) interrupts the program during copying the tree. Previously it was not handled until the copy was complete. -
New
--no-copy-target
option.
cargo-mutants 0.2.1
- Arguments to
cargo test
can be passed on the command line after--
. This allows, for example, skipping doctests or setting the number of test threads. #15
cargo-mutants 0.2.0
0.2.0
Released 2022-02-06
-
A new
--timeout SECS
option to limit the runtime of anycargo test
invocation, so that mutations that cause tests to hang don't causecargo mutants
to hang.A default timeout is set based on the time to run tests in an unmutated tree. There is no timeout by default on the unmutated tree.
On Unix, the
cargo
subprocesses run in a new process group. As a consequence ctrl-c is explicitly caught and propagated to the child processes. -
Show a progress bar while looking for mutation opportunities, and show the total number found.
-
Show how many mutation opportunities were found, before testing begins.
-
New
--shuffle
option tests mutants in random order. -
By default, the output now only lists mutants that were missed or that timed out. Mutants that were caught, and mutants that did not build, can be printed with
--caught
and--unviable
respectively.