Releases: stryker-mutator/stryker4s
Stryker4s v0.11.0
Welcome to Stryker4s 0.11.0! The big feature in this release is a new kind of mutator: regular expressions (#699)! We're using the awesome Weapon regeX library to mutate regular expressions. If you're curious how this works, take a look at the demo page.
One other noteworthy change is in #696. To reduce maintenance and external dependencies in Stryker4s, the dashboard reporter will no longer work on JDK 10 or lower. If you are using the dashboard reporter on Java 10 or lower, Stryker4s will not upload your report and throw an exception. You won't run into this restriction when not using the dashboard reporter or if you are running Stryker4s on a recent JDK.
🚀 Features
- Mutate regular expressions using weapon-regex (#699) @hugo-vrijswijk
🐛 Bugfixes
- Fix pattern interpolation matching on string mutations (#704) @hugo-vrijswijk
🧰 Maintenance
- Refactor logger to simplify interface (#700) @hugo-vrijswijk
💥 Breaking change
- Replace sttp async-http-client backend with httpclient (Java 11+) (#696) @hugo-vrijswijk
Stryker4s v0.10.1
🚀 Features
- Add support for timeout based on initial test in command-runner (#685) @hugo-vrijswijk
- Support Scala 3 syntax with configurable scala-dialect (#681) @hugo-vrijswijk
🐛 Bugfixes
- Fix NumberFormatException for command-runner (#686) @hugo-vrijswijk
🧰 Maintenance
- Refactor MutantRunner to separate TestRunner (#684) @hugo-vrijswijk
📖 Documentation
- Update logged url for config page (#687) @hugo-vrijswijk
Stryker4s v0.10.0
Stryker4s is a mutation testing framework. It tests your tests by temporarily inserting small bugs, or mutants, into your production code. Your tests are run for each mutant. If your tests fail then the mutant is killed. If your tests passed, the mutant survived. The higher the percentage of mutants killed, the more effective your tests are. See the website for more information.
We are excited to release Stryker4s v0.10.0. If you haven't been following along, this is a big one! The sbt testrunner has been completely reworked to be a lot faster. So much faster I am not even sure how to put it into words! For perspective, running Stryker4s on itself took around 40 minutes on 0.9.2. On 0.10.0 it takes just a little over 2 minutes! This massive improvement is possible due to the new testrunner (#492), which is able to run your tests in rapid-fire without restarting any processes. We believe the Stryker4s sbt plugin is now fast enough for daily use, and probably even faster than some mutation testing frameworks in other languages! If performance has been keeping you from trying Stryker4s be sure to give it a try and let us know your results Slack.
Another big feature and performance boost since 0.10.0-RC3 is that coverage analysis is now supported (#666). Tests will now be skipped and reported as NoCoverage
if no test hits that mutant. It also adds support for detecting 'static' mutants which has been an issue since the 0.10.0-RC releases.
Note that due to these changes it is very likely that your mutation score will be a little different than it was in 0.9.2!
Next up on the roadmap is further speed improvements by only running tests that a specific mutant covers, adding concurrent testrunners, and bringing these awesome speed improvements to the Maven plugin.
🚀 Features
- Mutant coverage (sbt plugin) (#666) @hugo-vrijswijk
- Add projectRoot to report JSON (#670) @hugo-vrijswijk
🧰 Maintenance
- Use gpg2 to sign releases (#659) @hugo-vrijswijk
- Use ScalaTests ExecutionContext when running AsyncSpec (#638) @hugo-vrijswijk
📖 Documentation
Stryker4s v0.10.0-RC3
This is the third (and hopefully final) pre-release of Stryker4s 0.10.0. The next release should be the final one and will include code coverage (for sbt). There are some bugfixes in this release, but the biggest one you'll notice is the change in logging backend (#623). Stryker4s now uses only whatever logging implementation the build tool requires. What this means is logging might look slightly different, and Stryker4s will now no longer have a core dependency on slf4j 🙌. Setting the log-level still works the same way.
We also support the fresh-out-of-the-oven Scala 3.0.0-M1 🔥!
🚀 Features
- Rework logging (#623) @hugo-vrijswijk
🐛 Bugfixes
- Fix some mutations in if-statements not being applied (#590) @hugo-vrijswijk
- Fix mutations in
case
statements not always being added (#589) @hugo-vrijswijk
🧰 Maintenance
- Update dotty to Scala 3.0.0-M1 (#626) @hugo-vrijswijk
- Set up cats-effect-testing-scalatest (#616) @hugo-vrijswijk
- Setup manual trigger for mutation-testing workflow (#618) @hugo-vrijswijk
- Only set timeout if initial-test-run is succesful (#588) @hugo-vrijswijk
📖 Documentation
- Fix broken links in README.md (#621) @wijtserekker
- HTML report body changes with theme (#622) @wijtserekker
Stryker4s v0.10.0-RC2
This is the second pre-release of Stryker4s 0.10.0 featuring the new sbt testrunner. See the previous release for more information about the new testrunner.
In this release a couple of new features were added to give more control over the testrunner via your stryker4s.conf
. The biggest one is the new timeout-runner which fully supports timeouts based on the initial test-run duration (#573). You can now also restart the testrunner every n
runs if you want to (#582) or go back to the old legacy sbt testrunner (#578).
🧾 Known issues
- 'Static' mutants (a
val
in anobject
) are always reported as survived.
🚀 Features
- Fully support timeout runner (sbt testrunner only) (#573) @hugo-vrijswijk
- Add maxTestRunnerReuse config option (#582) @hugo-vrijswijk
- Config option for legacy sbt test runner (#578) @hugo-vrijswijk
🐛 Bugfixes
- Fix topStatement for argument Assign terms (#576) @hugo-vrijswijk
🧰 Maintenance
- Improve humanReadable duration to use 'and' at the end (#583) @hugo-vrijswijk
- Cleanup selfRecreatingResource to use Ref (#581) @hugo-vrijswijk
Stryker4s v0.10.0-RC1
This is a pre-release version of Stryker4s. The biggest change is the new testrunner for sbt (#492) which boasts major performance improvements for the sbt plugin compared to the old testrunner. Running it on Stryker4s speeds up a mutation run from 40 minutes to less than 3 🏃♀️⏱! Please test it out and give feedback in Slack or create a new issue if you run into anything! All Scala versions from 2.11 to Dotty 0.27 are supported. The next release of Stryker4s will likely have this testrunner as a configurable 'experimental' testrunner.
🧾 Known issues
- 'Static' mutants (a
val
in anobject
) are always reported as survived.
🚀 Features
- Sbt process testrunner (#492) @hugo-vrijswijk
🧰 Maintenance
- Mergify: configuration update (#569) @hugo-vrijswijk
- Run CI on JDK 14 (#566) @hugo-vrijswijk
Stryker4s v0.9.2
🚀 Features
🐛 Bugfixes
- Fix sbt scripted tests not running (#551) @hugo-vrijswijk
🧰 Maintenance
- Replace cache action with coursier-cache (#557) @hugo-vrijswijk
- Remove TreeEquality (#547) @hugo-vrijswijk
- Inject reporters into (renamed) AggregateReporter (#546) @hugo-vrijswijk
- Improve config validations (#544) @hugo-vrijswijk
Stryker4s v0.9.1
🚀 Features
- Check minimum supported sbt version (#524) @hugo-vrijswijk
🐛 Bugfixes
- Handle NaN mutation score in report correctly (#529) @hugo-vrijswijk
- Report sbt Error TestResult correctly as failed instead of error (#528) @hugo-vrijswijk
- Note: This might slightly change your mutation score
🧰 Maintenance
- Aggregate all projectmatrix projects in root (#527) @hugo-vrijswijk
Stryker4s v0.9.0
🚀 Features
- Use
@SuppressWarnings
annotation to skip mutations (#499) @MercurieVV - Call reporters asynchronously (#488) @hugo-vrijswijk
- Introduce cats-effect, fs2 for reporters (#511) @hugo-vrijswijk
- Fix file reporters not writing to file (regression in-between releases) (#517) @hugo-vrijswijk
🐛 Bugfixes
- Add unused:explicits to scalacOptions blocklist (#522) @hugo-vrijswijk
- Fix crossPublish not publishing all Scala versions (#516) @hugo-vrijswijk
🧰 Maintenance
- Use java path for File IO where possible (#512) @hugo-vrijswijk
- Refactor MutantRunners to setup state in context object (#491) @hugo-vrijswijk
- Update cache to use multi-paths from v2 (#484) @hugo-vrijswijk
Stryker4s v0.8.1
Note: The release done on May 30th had an error where not all artifacts were published. Namely, stryker4s-core_2.12 and stryker4s-command-runner_2.12 were missing. This has been fixed and the artifacts should now be available.
🐛 Bugfixes
- Fix catch-statements not being included in mutations (#483) @hugo-vrijswijk