🔎 Automated mutation testing for Swift 🕳️
This release of Muter contains bug fixes and new features!
🆕 What's new? 🆕
--operators <operators>
.muter operator all
print all the available operators.--skip-update-check
.--format <format>
with the existing reports plain
, json
, html
and, xcode
. Passing --output
will save it on the disk.📣🎉 Shout outs 🎉📣 Special thanks to @ZevEisenberg for the help and the cool ideas.
This release of Muter contains bug fixes and new features!
Exclusion lists now supports glob
expressions, like /Sources/**/*.swift
#179
Reports now show before vs after for all mutation operators #102
New HTML report #194
Ignores line within compiler directives #114 Ignores Swift Package Manager manifest file #186 Uses test process termination code #185 #189 @ZevEisenberg Ignores files without coverage #197
Special thanks to @ZevEisenberg for his amazing work and @karlprieb for helping our HTML report come to life.
This release of Muter updates it to Swift 5.3 and many suggestions/improvements that came from you all, the community!
We've added support for users to skip mutations from being applied.
@Uriah-Eisenstein-ATT #153
We are now appending the mutation summary at the end of Xcode report. @mrvincenzo #157
Thanks to @ZevEisenberg and @rakaramos, muter went through a big upgrade. swift-syntax has been updated, Commandant was replaced by Swift Argument Parser for parsing commands, and we now have a fancy logo 🧟
This release of Muter contains a bug fix and a new support for projects that are using Buck as build system.
🆕 What's new? 🆕
⬆️ What's improved? ⬆️
NegateConditionals
to RelationalOperatorReplacement
.This release of Muter contains a fix for users who use Muter within Xcode.
⬆️ What's improved? ⬆️
The internals of Muter underwent a substantial rewrite in v11, which introduced a regression where the paths used to report the location of surviving mutants in your code pointed to the temporary directory Muter operated from, rather than your project's directory. This release fixes this issue.
Thanks to @ZevEisenberg for reporting this issue. If you're interested in how we improve our testing strategy to prevent this from happening again, check out this comment.
This release of Muter adds a whole bunch of new functionality, including a facelift for our commandline users. This release is a significant step towards making Muter an effective & easily adopted CI tool.
🆕 What's new? 🆕
--files-to-mutate
! You can optionally use this flag, and provide a space separated list of files, paths, or glob expressions which point Muter to the files you would like to mutation test. Using this flag overrides your exclude
list from your muter.conf.json
.muter_logs
. You can use these logs to diagnose how a particular mutant impacts your test suite, or to troubleshoot an issue you may be experiencing when setting Muter up.⬆️ What's improved? ⬆️
Many thanks to @rakaramos for the amount of work he did for this release on the new commandline flag and making it easier for you to find your logs. This is a release that was truly a team effort. I'm excited for the next few releases that are coming up!
This release of Muter updates it to Swift 5. In addition to this, it contains a handful of new features we're quite excited about!
🆕 What's new? 🆕
InvertLogicalConnector
! This operator is useful for driving out testing issues that don't catch all the branches that your logical operators can take. Read more about it here.muter init
will now generate a configuration file that is filled out with Muter's best guess at a configuration that will work for your project. This means that it can be as simple as muter init && muter
to get your project up and running! Right now, the automatic configuration generation supports projects that are using Xcode projects and workspace, as well as SPM projects. If you don't use any of these for your build and test system, Muter is still configurable manually inside of its muter.conf.json
.⬆️ What's improved? ⬆️
Many thanks to @rakaramos, @ZevEisenberg, and a many others for their suggestions on what to improve, and their help getting this release together. A particular amount of gratitude is due to @mdiasdev for his help getting a CI set up for this project. Thank you all! :D
This release of Muter contains many suggestions and improvements that came from you all, the community!
🆕 What's new? 🆕
⬆️ What's improved? ⬆️
passing
and failing
. Instead, it uses the domain language of having killed mutants
or surviving mutants
, with an accompanying reason for how a mutant was killed. Check out the new test report format here. This was in response to many of you finding the previous language confusing, which hindered your ability to digest the report and make changes based on it.fileName.swift:1
. (Thanks for the suggestion, @fcanas)This release of Muter contains improvements to Muter's XCTest integration, a new report file format, and a new command line argument.
🆕 What's new? 🆕
--output-json
. The report will be written to a file named muterReport.json
. Stay tuned for some interesting features we have planned which will take advantage of this report format. ;)⬆️ What's improved? ⬆️
📣🎉 Shout outs 🎉📣 I'm excited to shout out @rakaramos for his work on adding the new commandline argument and fail-fast/fail-early features that are included with this release. He worked on the bulk of the features included in this release, and is a generally awesome person to collaborate with. 👍
I'm also excited to shout out @reedr3, who I paired with on writing Muter's new regression test suite. The work we did together makes sure that future releases of Muter can't adversely affect its test reporting, which is essential for depending on it as a testing tool. ✌️
Thank you both for all of your work, and here's to many more releases!
This release includes several updates that affect Muter's handling of build errors, run-time errors, and mutation scores.
Specifically:
Additionally, there's been an improvement to the messaging when Muter doesn't discover source files; it's output now includes some suggestions to help you troubleshoot.
And lastly, there are a few minor style and copy changes to the mutation scores to make them a little bit easier to read.