Skip to content

Git Plugin

Release omitted due to deployment error

Dependencies are now shaded to allow the GitHub plugin to be used on a shared classpath without version conflicts.

Revert upgrade due to potential classpath issues.

Previous releases added a link to pitest to the GitHub check run, however for some repository configurations the link was displayed against each mutant implying it contained mutant specific information.

To avoid this confusing behaviour, the link is no longer set.

Bug Fix: Error Serializing Gradle Config Cache

Section titled “Bug Fix: Error Serializing Gradle Config Cache”

On some versions of Java, gradle was unable to serialize the arcmutate tasks when the configuration cache was enabled.

If a trailing ‘/’ was included in the configured URL for GitHub the plugin previously failed when authenticating. URLs both with and without trailing ‘/’ are now supported.

Usually the pr number and head SHA are retrieved from the GitHub json payload when working with GitHub pull requests. When the payload is not available this information can now be supplied to maven via two new parameters

  • prNumber
  • prHeadSHA

These parameters should not be supplied when the githubEventPath parameter is set or auto-set from the GITHUB_EVENT_PATH environment variable.

These parameters are designed for use with third party CI platforms. They should not be set when using GitHub Actions.

Trailing whitespace is now ignored when detecting changed files. This could cause an issue for teams using mixed OSes when line endings were converted.

This release moves Arcmutate to Sonatype’s new publishing infrastructure. It contains no functional changes.

Enhancement: Configurable Bitbucket Report Keys

Section titled “Enhancement: Configurable Bitbucket Report Keys”

The title and key for Bitbucket Code Insights reports can now be explicitly set. This allows multiple reports to be produced by different pipelines without them overwriting each other.

Note, this release requires pitest 1.19.0 or above.

Links to additional information about mutations will now be included in mutant descriptions for the following providers

  • BitBucket
  • Gitlab

This behaviour is enabled by default, but can be disabled using a provider specific flag.

Previously, the bitbucket.url parameter could not be set in a way that worked for both the comment and Code Insights api.

The URL should now be set to

  • http:///rest/

If the URL has been set to

  • http:///rest/api/1.0

The comments api will continue to work with this release, but the configuration will need to be updated in order to use the Code Insights api.

Enhancement: Bitbucket Code Insights Support

Section titled “Enhancement: Bitbucket Code Insights Support”

Arcmutate now supports two modes of uploading mutation testing results to Bitbucket Cloud and Data Centre instances.

Results can be uploaded as comments as before, or as a Code Insights report via new maven goals.

Pitest 1.17.1 includes support for “cross module tests” where code and tests are not placed within the same module. If this is not carefully configured, more than one result may be generated for each class.

This release adds additional support for cross module tests, allowing multiple results to be generated for each mutated class, and for those results to be combined before reporting within a pull request.

This release includes major changes to arcmutate’s internal gitci file format.

The mergeRequest id was previously incorrectly typed as an int, causing an overflow for teams with large numbers of builds.

This is now correctly typed as a long.

Enhancement: Cleaner Missing Blob Handling

Section titled “Enhancement: Cleaner Missing Blob Handling”

When arcmutate is run against a corrupt git repo, or a clone with missing information such as a blobless clone, it will now produce a cleaner error message.

Requires pitest 1.16.0 or above.

Older versions of gradle throw errors in the 1.3.0 release due to the inclusion of a multi release jar dependency. Gradle was attempting to scan all classes in the jar using a version of ASM that did not support recent bytecode versions.

Requires pitest 1.16.0 or above.

Breaking Change: Extend Internal Json Format

Section titled “Breaking Change: Extend Internal Json Format”

The simplified Json output from which pull request summaries are generated is expanded in this release to include additional data. The files previously took the form of simple arrays, they are now Json objects.

Although the Json file format is an undocumented internal implementation detail, it is possible that teams have created build steps based on it. These will need to be updated when upgrading.

Build issues reported by pitest and its plugins are now displayed on pull request summaries. This includes notifications of licence expiry.

Enhancement: Bitbucket Cloud Access Tokens

Section titled “Enhancement: Bitbucket Cloud Access Tokens”

Previous released supported authenticating with Bitbucket cloud only via app passwords. By default, the maven plugin now expects an access token to be supplied in the bitbucket.token field.

App passwords are still supported, but discouraged. To use an app password the parameter bitbucket.useAppPassword must bet set to true.

A configuration change must therefore be made when upgrading

When an access token is used to authenticate, the bitbucket.user parameter no longer needs to be set. This parameter is required only when using app passwords.

This release moves the plugins to com.arcmutate. Previous releases were published as com.groupcdg.

Enhancement: Support Deletion of Resolved Comments

Section titled “Enhancement: Support Deletion of Resolved Comments”

Arcmutate now supports deleting Bitbucket server comments that have been marked as resolved by a user. Previously these read-only comments were left in place.

Bug Fix: Do No Error for Resolved Comments

Section titled “Bug Fix: Do No Error for Resolved Comments”

Recent versions of Bitbucket server allow comment threads to be marked as resolved and placed in a read only state. If a user resolved a comment created by Arcmutate, the plugin threw an error when attempting to delete or update the resolved comment.

Enhancement: Optionally Create Tasks on Bitbucket Server

Section titled “Enhancement: Optionally Create Tasks on Bitbucket Server”

When the gitci level is set to error, mutations will now be created as tasks on bitbucket server.

Enhancement: Retain Outdated Mutant Descriptions

Section titled “Enhancement: Retain Outdated Mutant Descriptions”

For Bitbucket server, when a mutation comment cannot be deleted due to replies, the original text will now be retained when marking the comment as outdated.

Enhancement: Report Number of Covering Tests

Section titled “Enhancement: Report Number of Covering Tests”

Previously the pull request integrations reported the number of tests run against each mutant. This did not work well when a history file was also used, as the number of executed tests would be zero after the first analysis if the code and tests around a mutant were not changed.

The number of covering tests for each mutant is now reported instead. This is a stable figure, even when a history file is in use, and arguably more useful information to be presented with when assessing a surviving mutant.

Previous versions of the plugin updated the names of mutated lambdas to be more human readable. This functionality is now provided by the arcmutate base plugin. If it is not already configured for your project it should be installed when upgrading to 1.1.0.

Bug Fix: Broken Table For Bitbucket Server

Section titled “Bug Fix: Broken Table For Bitbucket Server”

When all mutations were killed, the table failed to render correctly on bitbucket server which requires additional whitespace in the markdown.

Bug Fix: Do Not Fail When No Mutations in Mixed Mode

Section titled “Bug Fix: Do Not Fail When No Mutations in Mixed Mode”

The pitest failWhenNoMutations flag is now autoset to false when running in git mixed mode. This makes the behaviour the same across all three modes.

Enhancement: Detect Unchanged Modules in Test and Mixed Mode

Section titled “Enhancement: Detect Unchanged Modules in Test and Mixed Mode”

When a module contains no git changes, arcmutate will now stop processing without running tests when operating in git-test or git-mixed modes. This brings the behaviour in line with normal git mode, and potentially saves significant processing time.

Comments with replies cannot be deleted on BitBucket Server, which could cause the plugin to fail when updating an MR (BitBucket cloud is unaffected).

The plugin will now replace the contents of comment that cannot be deleted with a fixed message.

Adds the option to delete past summary comments in GitHub PRs. This is controlled by a new deleteOldSummaries parameter which defaults to false.

Introduces a new mode GIT_MIXED combining the behaviour of the test and change based modes. Code will be considered for mutation if it has been modified, or if it is part of a class where one or more lines are exercised by a modified test.

GIT_TEST and GIT_MIXED mode require the source roots of the test code to be passed to pitest as well as the production source roots. As these will often not be configured, the plugin will attempt to auto-add test directories. If a directory is configured of the form src/main/x the plugin will add src/test/x if it exists.

Enhancement: Prevent duplicates in annotations.json

Section titled “Enhancement: Prevent duplicates in annotations.json”

Bug Fix: Handle Concurrent Changes to Git History

Section titled “Bug Fix: Handle Concurrent Changes to Git History”

On some platforms, a fatal error would occur if an external process modified a version controlled file. Most often this occurred when lock files, or other files that were not intended to be version controlled, were accidentally included due to missing entries in the .gitignore.

These scenarios are no longer treated as an error, although the inclusion of non source files in the git history may result in additional processing and slow performance.

Small enhancement to logging to ensure the last accessed file is recorded when an IOException occurs.

Fix for potential resource leak when analysing very large changesets.

See Licence Management for details.

Additional mode of operating, see test based mode

Enhancement: Automaticaly Unset FailWhenNoMutations

Section titled “Enhancement: Automaticaly Unset FailWhenNoMutations”

When the plugin is activated pitest’s failWhenNoMutations property is now automatically unset. This removes the need for additional config when the changes in the git history do not include mutable code.