Gradle Pitest Plugin Versions Save

Gradle plugin for PIT Mutation Testing

release/1.15.0

7 months ago
  • Automatically add junit-platform-launcher dependency to testRuntimeOnly for JUnit Platform projects - #337 - help from Björn Kautler
  • Remove deprecated Project.getConvention() usage (in Gradle 8.2+) - #343
  • PIT 1.15.0 by default
  • Basic regression testing with Gradle up to 8.3

Compatibility notes Starting with PIT 1.14.0 (with pitest-junit-plugin 1.2.0+) junit-platform-launcher is no longer shaded and has to be explicitly added to avoid: "Minion exited abnormally due to UNKNOWN_ERROR" or "NoClassDefFoundError: org.junit.platform.launcher.core.LauncherFactory".

As an experimental (incubating) feature, junit-platform-launcher is automatically added to the testRuntimeOnly configuration for the JUnit Platform projects.

PLEASE NOTE. This feature is experimental and might not work as expected in some corner cases. In that situation, just disable it with addJUnitPlatformLauncher = false and add the required dependency 'junit-platform-launcher' in a proper version to 'testRuntimeOnly' manually. More information: https://github.com/szpak/gradle-pitest-plugin/issues/337

release/1.9.11

1 year ago
  • Support for thresholds in aggregated metrics (requires PIT 1.9.9+) - #319 - PR by pfoerd
  • Support for verbosity flag, "spinner" disabled by default - #267 - PR by Carsten Otto
  • PIT 1.9.11 by default
  • Do not produce timestamped reports by default for PIT 1.9.6+ - suggestion by Siddardha Bezawada
  • Minimal supported PIT version is 1.7.1 (due to "verbosity" flag used by default)
  • Deprecate verbose flag - verbosity is much more versatile, especially when used from the Gradle plugin

Compatibility notes

  1. Due to the usage of the "verbosity" flag by default, the minimal supported PIT version is 1.7.1 (released 2021-09-29).
  2. Due to the changes in PIT 1.9.6, timestamped reported are not generated by default (with PIT 1.9.6+). It still can be enforced in the GPP configuration.

release/1.9.0

1 year ago
  • PIT 1.9.4 by default (requires pitest-junit5-plugin 1.0.0!)
  • Deprecate support for JDK 8 - #299
  • Support for inputEncoding and outputEncoding (named in plugin inputCharset and outputCharset) - #310
  • Add pitest dependencies only during configuration resolution - #313 - PR by Ian O'Malley
  • Improve build cache hit cache with relative path - #315 - PR by Siddardha Bezawada
  • Remove (optional) dependencyDistance configuration parameter removed in PIT 1.9.0 - #311

Compatibility notes

  1. Due to the plugin API changes in PIT 1.9.0, the new pitest-junit5-plugin 1.0.0 is required (other PIT plugins - if used - also need to be upgraded).
  2. The plugin is released with JDK 11. Source/class compatibility is still set to JDK 8, but this might change without notice.

release/1.7.4

2 years ago
  • Do not pass --testPlugin for PIT 1.6.7+ for forward compatibility - #277
  • Deprecate testPlugin configuration parameter (not needed in PIT 1.6.7+, to be removed in PIT 1.8.0) - #277
  • PIT 1.7.4 by default
  • Upgrade Gradle wrapper to 6.9.2
  • Test for exclusion of certain mutators - #303 - PR by Narendra Pathai

Compatibility notes:

  1. The testPlugin configuration parameter is deprecated and should not be used. In fact, starting with 1.6.7 it is no longer used (it is enough to add the PIT plugin as a buildscript dependency or just set junit5PluginVersion to use the JUnit 5 plugin). In addition, that property is planned to be removed in PIT 1.8.0.
  2. Using junit5PluginVersion no longer internally set testPlugin property. For using with old PIT (<1.6.7) it is required to set it explicitly in configuration.

release/1.7.0

2 years ago
  • Support for Gradle configuration cache - #249 - PR by David Burstrom
  • Turn on cacheability for PitestTask - #67 - PR by David Burstrom
  • PIT 1.7.0 by default
  • Fix deprecation warnings in Gradle 7 - #283 - PR by Mike Duigou
  • Bump minimal supported Gradle version to 6.4 - required to fix deprecation warnings in Gradle 7
  • Remove unused maxMutationsPerClass configuration parameter - #266
  • Regression tests for JUnit Jupiter 5.8 (with JUnit Platform 1.8) and pitest-junit5-plugin 0.15
  • Upgrade Gradle wrapper to 6.9.1
  • Switch CI from defunct travis-ci.org to travis-ci.com

Compatibility notes:

  1. Gradle 6.4+ is required (to fix deprecation warnings in Gradle 7)
  2. Not directly related with this plugin, but keep in mind that JUnit Jupiter 5.8 (JUnit Platform 1.8) requires pitest-junit5-plugin 0.15+, while 5.7 (1.7) requires <=0.14. Set right plugin version for JUnit 5 version used in your project to avoid runtime errors (such as NoSuchMethodError: 'java.util.Optional org.junit.platform.commons.util.AnnotationUtils.findAnnotation(java.lang.Class, java.lang.Class, boolean)' - see #300).
  3. Due to the internal changes in PIT 1.7.0 (#630):
    • all history files should be deleted before upgrading
    • the names of the remove conditionals mutators have changed slightly (it might be needed to update their names in build.gradle, if activated explicitly)

release/1.6.0

3 years ago
  • Report aggregation for multi-project builds - #243 - PR by Mike Safonov
  • Support new configuration property testStrengthThreshold (PIT 1.6.1+) - #247 - PR by Michael Hönnig
  • PIT 1.6.3 by default
  • Regression tests also with Gradle 7 (milestone)
  • Upgrade Gradle wrapper to 6.8.3
  • Remove deprecated mutateStaticInits and includeJarFiles

Sample configuration for the new report aggregation feature:

//in root project configuration
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:...'
    }
}

apply plugin: 'info.solidsoft.pitest.aggregator' // to 'pitestReportAggregate' appear

subprojects {
    apply plugin: 'info.solidsoft.pitest'

    pitest {
        // export mutations.xml and line coverage for aggregation
        outputFormats = ["XML"]
        exportLineCoverage = true
        ...
    }
}

After the pitest pitestReportAggregate tasks execution, the aggregated report will be placed in the ${PROJECT_DIR}/build/reports/pitest directory.

release/1.5.2

3 years ago
  • Support java-test-fixtures plugin - #223 - PR by Piotr Kubowicz
  • PIT 1.5.2 by default
  • Add functional test with Spock 2 (using JUnit Platform)
  • Bump minimal supported PIT version to 1.4.0 - the first version which required Java 8 (May 2018)
  • Upgrade Gradle wrapper to 6.6

release/1.5.1

4 years ago
  • Fail with meaningful error message on no longer supported pitest configuration in rootProject.buildscript - #205

The only change helps people not reading the release notes to get know why their projects with the JUnit 5 PIT plugin stopped working after migration to 1.5.0+.

release/1.5.0

4 years ago
  • Move pitest configuration from root project to current project to eliminate Gradle 6+ warning - #62
  • Upgrade Gradle wrapper to 6.3 (ability to build with Java 14)

Compatibility changes. This version finally relaxes the need to create pitest configuration in the root project. This was problematic especially with Android projects and also started to generate deprecation warnings in Gradle 6.

The migration steps are required only in project manually adding custom PIT plugins. For example:

buildscript {   //only in gradle-pitest-plugin <1.5.0
    //...
    configurations.maybeCreate('pitest')
    dependencies {
        pitest 'org.example.pit.plugins:pitest-custom-plugin:0.42'
    }
}

pitest {
    testPlugin = 'custom'
    //...
}

should be replaced with:

//only in gradle-pitest-plugin 1.5.0+

//in project (not buildscript) dependencies and without needto create "pitest" configuration manually
dependencies {
    pitest 'org.example.pit.plugins:pitest-custom-plugin:0.42'
}

pitest {
    testPlugin = 'custom'
    //...
}

Please also note that the users of the new JUnit 5 PIT plugin configuration mechanism with junit5PluginVersion are not affected.

release/1.4.9

4 years ago
  • Fix regression in 1.4.8 related to missing source listing in PIT reports - #198
  • migrate remaining configuration properties to Lazy Configuration API
  • more corner cases tested