Stryker4s Versions Save

Mutation testing for Scala

v0.16.1

1 month ago

0.16.1 (2024-04-18)

This release updates Scalameta to 4.9.3, resolving an issue some users might have when another plugin is also using a recent version of Scalameta.

v0.16.0

4 months ago

0.16.0 (2023-12-27)

This release mainly features improved reporting. The biggest feature is inclusion of tests in the report. Stryker4s will now show all your test suites, and (if supported) the individual tests of each test suite. This makes it easier to see which tests cause failing mutants.

Test output

In the HTML report, a new tab is added to show the test results:

image

Opening a test suite reveals the tests inside that suite, clicking on one shows more information available about what mutants it covers and might have killed:

image

Back on the mutant tab, each mutant will now show what tests are covered by it. And for killed mutants the test exception output is shown:

image

Regex mutations

Regex mutations now show the precise characters inside the expression that has been mutated as its location, and a richer description with info about the mutation is added:

image image

image

⚠ BREAKING CHANGES

  • up minimum-supported sbt version to 1.7.0 (#1476)

Features

  • add weapon-regex description to mutant and improve statusReason report field (#1470) (bb8878f)
  • regex: use correct replacement and location from weapon-regex mutations (#1480) (fc9854b)
  • report: add tests and coverage per-test to report (#1475) (5a529c8)

Bug Fixes

Miscellaneous Chores

v0.15.2

6 months ago

🐛 Bugfixes

  • Set --release javac option to 8 (#1458) @hugo-vrijswijk

v0.15.1

6 months ago

This patch release mostly refactors some internal module layout.

For Maven users, the default files to mutate configuration now uses Maven project info. For sbt users, using a snapshot release of the plugin will no longer require also adding a snapshot resolver to your project too (it is done automatically now).

🐛 Bugfixes

  • Add snapshot resolver if snapshot version is used in sbt plugin (#1457) @hugo-vrijswijk
  • Use Maven project info to resolve files to mutate (#1454) @hugo-vrijswijk

🧰 Maintenance

  • Test CI on JDK 21 (#1456) @hugo-vrijswijk
  • Move some packages and remove unused ext methods (#1455) @hugo-vrijswijk
  • Add munit to testkit (#1453) @hugo-vrijswijk
  • Add api and testkit projects (#1449) @hugo-vrijswijk
  • modules structure (#1448) @hugo-vrijswijk
  • Use cats option/either syntax (#1440) @hugo-vrijswijk

v0.15.0

7 months ago

See https://stryker-mutator.io/blog/stryker4s-0-15-is-here/

🚀 Features

  • [sbt] Add warning in case of empty framework sequence (#1424) @fabianhjr
  • Rework mutant placing algorithm (#1150) @hugo-vrijswijk
  • Add staticTmpDir static path and cleanTmpDir config options (#1263) @gergelytraveltime
  • Fill report with system and framework info (#1211) @hugo-vrijswijk
  • Add logging backend wrapper for sttp requests (#1155) @hugo-vrijswijk
  • Use sbt's setting for if console color is enabled (#1071) @hugo-vrijswijk
  • Add colors to console output (#1070) @hugo-vrijswijk
  • Add source3 scala-dialect and deprecate 2.11 (#1062) @hugo-vrijswijk

🐛 Bugfixes

  • Simplify canPlace algorithm and fix instrumenter recursively placing mutants (#1432) @hugo-vrijswijk
  • [core] Use config Dialect to write Scala3 mutations (#1416) @fabianhjr

🧰 Maintenance

  • Fix releases by disabling sbt-tpolecat release mode (#1421) @hugo-vrijswijk
  • Use cats-effect Env for reading CI environment variables (#1367) @hugo-vrijswijk
  • sbt: enable local publish for stryker4s-command-runner (#1262) @gergelytraveltime
  • Update devcontainer java version to latest (17) (#1103) @hugo-vrijswijk
  • Use predefined license config value (#1089) @hugo-vrijswijk
  • Use fs2 socket implementations instead of old java.net (#1069) @hugo-vrijswijk
  • Build maven-plugin on Scala 2.13 (#1061) @hugo-vrijswijk
  • Compile with -Xsource:3 (#1060) @hugo-vrijswijk

📖 Documentation

  • Two small documentation fixes (#979) @MartinWelgemoed
  • minor typo in docs (#1234) @hochgi

v0.14.3

2 years ago

🚀 Features

  • Use more accurate initial test-run duration (sbt plugin) (#1053) @hugo-vrijswijk

🧰 Maintenance

  • Optimize CoverageTestRunResult size (#1054) @hugo-vrijswijk
  • Replace log4j with slf4j-simple in stryker4s-command-runner (#1039) @hugo-vrijswijk

v0.14.2

2 years ago

This release updates log4j to 2.16.0 for the command-runner to fix the security issue. If you use the sbt or Maven plugin, this has no impact as those plugins do not use log4j. If you use the command-runner, upgrading is recommended.

Also updates the HTML report to a newer version with some performance fixes and a new 'diff' view https://github.com/stryker-mutator/stryker4s/pull/1028:

html report diff view

🧰 Maintenance

  • Disable snapshot releases for Maven plugin (#1032) @hugo-vrijswijk

v0.14.1

2 years ago

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.

This release adds per-test coverage. That means when testing a mutant, Stryker4s will only run the tests that cover that mutant, instead of all tests. Tests that don't cover a mutant can never kill it. Makes sense, right? That's why we added it. When running Stryker4s on Stryker4s, this improved the performance by about 40% 🥳! Big thanks to @OssamaSijbesma for adding this feature!

🚀 Features

  • Per-test coverage analysis (#1001) @OssamaSijbesma
    • Fix per-test coverage analysis (#1004) @hugo-vrijswijk
  • Fill testsCompleted in the report (#1005) @hugo-vrijswijk

🧰 Maintenance

  • Setup libraryDependencySchemes for stryker4s dependencies (#1002) @hugo-vrijswijk

v0.14.0

2 years ago

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.

I'm thrilled to release this new version of Stryker4s. When Stryker4s was first released 3 years ago (time flies!), it's two major problems for large adoption were performance and handling compile errors. Performance got a big improvement in v0.10.0 and v0.12.0. With this release, Stryker4s will detect if a mutant causes a compile error, mark it for the report, and cleanly rollback to continue with the rest of the mutants. This means compile-errors won't have to be manually excluded per file or with annotations anymore! Huge thanks to @MartinWelgemoed for contributing this feature!

This release also uses Protobuf for inter-process communication. Unfortunately, this means dropping support for Scala 2.11. The last release for 2.11 was 4 years ago, and is not supported anymore by most libraries. If you still need 2.11 support, then older Stryker4s versions will keep working. Using Protobuf makes Stryker4s faster, safer and easier to debug.

Speaking of easier to debug, there's two new config options for debugging: debug.debug-test-runner and debug.log-test-runner-stdout which opens up debug arguments to the test-runner, and log test-runner output to debug only when enabled, respectively. Read more about the new options in the configuration docs.

🚀 Features

  • Implement retry logic for dealing with compiler errors (#946) @MartinWelgemoed
  • Add debug configuration options (#975) @hugo-vrijswijk
  • Use protobuf for serialization between test worker and main process (#969) @hugo-vrijswijk
    • Use proto 3 and optimize message size (#976) @hugo-vrijswijk

🧰 Maintenance

  • Use Java 17 in CI (#964) @hugo-vrijswijk
    • Use Java Temurin instead of deprecated Adopt in CI (#967) @hugo-vrijswijk
  • Log all unresolved dashboard config items instead of only the first (#947) @hugo-vrijswijk

📖 Documentation

  • Documentation fixes (#981) @mattkohl

v0.13.1

2 years ago

🐛 Bugfixes

  • Fix crash on Java <11 at end of mutation run (#935) @hugo-vrijswijk