- 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:
- 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 setjunit5PluginVersion
to use the JUnit 5 plugin). In addition, that property is planned to be removed in PIT 1.8.0. - Using
junit5PluginVersion
no longer internally settestPlugin
property. For using with old PIT (<1.6.7) it is required to set it explicitly in configuration.
- 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:
- Gradle 6.4+ is required (to fix deprecation warnings in Gradle 7)
- 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). - 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)
- 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
andincludeJarFiles
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.
- 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
- Fail with meaningful error message on no longer supported
pitest
configuration inrootProject.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+.
- 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 need to 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.
- 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
- Fix problem with setting
historyInputLocation
andjvmPath
- #189 - Less noisy "Adding dependency" logging - #182
- PIT 1.5.1 by default (better Java 14 support)
- Basic functional testing with Java 14
- Validation with Java Gradle plugin - #106 - PR by Matthew Haughton
- CodeNarc code checks - #184 - PR by Matthew Haughton
- Simpler usage with JUnit 5 with
junit5PluginVersion
configuration parameter - #177 - idea by John Scancella - Remove deprecation warnings in Gradle 6 - #155
additionalClasspathFile
no longer marked as@OutputFile
for better Gradle 6+ compatibility- PIT 1.5.0 by default
- Bump minimal Gradle version to 5.6 - required to fix deprecation warnings due to #10953
- Upgrade Gradle wrapper to 5.6.4
Starting with this release the configuration required to use PIT with JUnit 5 has been simplified to the following:
plugins {
id 'java'
id 'info.solidsoft.pitest' version '...'
}
pitest {
//adds dependency to org.pitest:pitest-junit5-plugin and sets "testPlugin" to "junit5"
junit5PluginVersion = '0.12'
}
See this blog post for more details.
Compatibility changes. A new set of the configuration parameters (jvmPath
, historyInputLocation
and historyOutputLocation
) has been converted from File
to RegularFileProperty
to prevent deprecation warnings in Gradle 6+. Gradle itself should handle those changes for configuration in build.gradle
, however, there could be some corner cases if those fields were used directly.
- Support for includedTestMethods (PIT 1.3.2) - #79
- Support for useClasspathJar (PIT 1.4.2) - #92
- Support for skipFailingTests (PIT 1.4.4) - #113
- Pass additional PIT features from command line with
--additionalFeatures
- #139 - Set
targetTests
explicitly - #144 - Ability to override
targetTests
from command line--targetTests
- #143 - Run
pitest
aftertest
if both scheduled to run - #141 - PR by Björn Kautler - Remove incubating
addFileExtensionsToFilter()
method added in 1.4.5 - suggestion by Björn Kautler - Travis build with OpenJ9 11 - #112
Compatibility changes. The incubating addFileExtensionsToFilter()
method added in 1.4.5 was removed as it is possible to achieve the same effect
(while waiting for improvement in Gradle) with:
pitest {
fileExtensionsToFilter.addAll('xml', 'orbit')
}
- Rework internal plugin implementation to Gradle 5+ standards
- PIT 1.4.10 by default
- Basic Java 12 support tested by CI build
- Move
pitest
task toverification
group - #136 - PR by Björn Kautler - Remove deprecation warnings in Gradle 6.0
- Bump minimal Gradle version to 5.1
- Meaningful error message on running unsupported Gradle version
- Switch build to Gradle 5.6.1
Known limitations. This is a technical release to cope with the changes in Gradle 5 and 6. PIT 1.4.10 is used by default, but not all new features of PIT 1.4.0+ have been implemented yet.
Breaking changes. This release changes internal implementation of the plugin configuration. The Gradle team worked hard to keep it as compatible
as possible, but not everything is supported. The new syntax can be required for adding elements to
the file extensions to filter (fileExtensionsToFilter
):
pitest {
addFileExtensionsToFilter(['xml', 'orbit'])
}
There could be also some issues for people interacting with the plugin from custom code (instead of from build.gradle
). As a side effect Gradle 5.1
(released in I 2019) is required.
- Basic Java 11 support verified with CI build (requires PIT 1.4.1+)- #86, #81
- Improve
pitest
task caching with @Classpath - #93 - PIT 1.4.3 by default
- Switch build to Gradle 4.10.2
- Remove support for Gradle <4.0 (for better Gradle 5 compatibility)
- Remove deprecation warnings in Gradle 5.0
- Enable automatic dependency bumping with Dependabot
Known limitations. To reduce confusion on Java 11 support, this version provides PIT 1.4.3 by default which supports Java 11. However, not all new features of PIT 1.4.0 to 1.4.3 have been implemented in this release of the Gradle plugin. They are planned to be added in the future versions.
- Support for test plugin selection in PIT (e.g. JUnit 5) - #76 - PR by Christoph Sturm
- Support for excludedTestClasses parameter in PIT - #75
- PIT 1.3.1 by default
- Drop Java 7 support - #70
- Basic Java 9 compatibility verified with CI build (preliminary support for Java 9 has been available since PIT 1.2.3) - #68
- Switch build to Gradle 4.5
Breaking change. Starting with 1.3.0 binary artifacts require at least Java 8.
- Make dependency exclusion on classpath configurable - #53
- PIT 1.2.4 by default
- Switch build to Gradle 4.3.1 - nicer executed tasks displaying with
--console=verbose
- ClassPathFile should not use exposed in configuration - #56
- Support for PIT features configuration - #65
- PIT 1.2.2 by default
- Switch releasing to Continuous Delivery with CDeliveryBoy - #66
- Automatic
CHANGELOG.md
synchronization with GitHub releases - #61 - Improve functional tests reliability
- Switch build to Gradle 4.1 (should be still compatible with 2.0+) - #64
- Remove ugly deprecation warning in Gradle 4.0+
- Make contribution for developers using Windows easier - AppVeyor CI build - #58
- support for new
classPathFile
parameter in PIT 1.1.11 - #50 - filter dynamic libraries - #52
- PIT 1.1.11 by default
- downgrade Gradle wrapper to 2.13 due to performance regression in tests with ProjectBuilder
- support for the new
maxSurviving
parameter in PIT 1.1.10 - #45 - add
withHistory
alias (new thing in PIT Maven plugin) for long establishedenableDefaultIncrementalAnalysis
parameter in Gradle plugin - PIT 1.1.10 by default - #49
- bring full Gradle 2.0 - 2.14.1 range of functional tests back (with custom changes to nebula-test)
- upgrade Gradle wrapper to 2.14.1 - #48
- PIT 1.1.9 by default - fixed process hangs in 1.1.6 - #39
- support for plugin configuration parameters - #29
- remove project file configuration functionality from the plugin (already removed upstream) - #28
- PIT 1.1.6 by default
- simplify internal release process and switch to Gradle 2.x - minimal required Gradle version is 2.0 - #30
- official support for PIT plugins - #17
- support for integration tests in separate modules - #25
- PIT and its runtime dependencies no longer put on additional classPath (with tests and code to mutate)
- PIT 1.1.4 by default
- better workaround for issue with not applied Java plugin when using new Gradle plugin mechanism - #21
- PIT 1.1.3 by default
- fix incompatibility with the new Gradle plugin mechanism - #21
- change plugin id to 'info.solidsoft.pitest' to be complaint with Gradle plugin portal [breaking change]
- make plugin available through Gradle plugin portal - #19
- add base automatic functional tests - #22
- make it easier to manually override PIT dependencies - #20
- PIT 1.1.0 by default
- follow new PIT version numbering scheme
- fix: pitest task fails on dependencies with parent packaged as pom - #15
- fix: wrong includedGroups/excludedGroups parameter names - #13 (contributed by @gvsmirnov)
- move PIT dependencies from project scope to rootProject.buildscript scope - #12
- adjust to PIT 1.0.0
- upgrade Gradle Wrapper to 1.12
- fix: broken PIT version override mechanism with configuration parameter - #7
- PIT is started as separate Java process with its own classpath - new
mainProcessJvmArgs
configuration parameter - adjust to PIT 0.33
- change
jvmArgs
configuration parameter type fromString
toList<String>
[potential breaking change] - upgrade Gradle Wrapper to 1.11
- adjust to PIT 0.32
- break compatibility with PIT <0.32 (due to internal refactoring in PIT)
- make targetClass configuration parameter optional when project group is defined - #5
- remove deprecation warnings - minimal required Gradle version is 1.6
- less verbose debug logging
- upgrade Gradle Wrapper to 1.10
- fix: task no longer always up-to-date for empty java source directory set - #2
- add support for additional test source sets - #3
- add support for additional main source sets
- remove
sourceDirs
configuration property -mainSourceSets
should be used instead [potential breaking change] - add dynamic task dependencies based on selected test source sets
- better interoperability with Windows
- upgrade Gradle Wrapper version to 1.6
- adjust to PIT 0.30
- artifacts availability in Maven Central Repository
- adjust to PIT 0.29
- add default mode for incrementalAnalysis
- add Gradle Wrapper
- initial release