From afadc271a8679b29703acd3bc1e79d04063f1f72 Mon Sep 17 00:00:00 2001 From: Stephan Schroevers Date: Sat, 19 Aug 2023 19:56:47 +0300 Subject: [PATCH 1/2] Introduce mutation test script for changed code While there, optimize the existing `run-mutation-tests.sh` script. --- CONTRIBUTING.md | 2 +- run-branch-mutation-tests.sh | 23 +++++++++++++++++++++++ run-mutation-tests.sh | 4 +--- 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100755 run-branch-mutation-tests.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 558292f502..eab0c6185e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -80,6 +80,6 @@ Some pointers: [error-prone-support-developing]: https://github.com/PicnicSupermarket/error-prone-support/tree/master#-developing-error-prone-support [error-prone-support-full-build]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-full-build.sh [error-prone-support-issues]: https://github.com/PicnicSupermarket/error-prone-support/issues -[error-prone-support-mutation-tests]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-mutation-tests.sh +[error-prone-support-mutation-tests]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-branch-mutation-tests.sh [error-prone-support-patch]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/apply-error-prone-suggestions.sh [error-prone-support-pulls]: https://github.com/PicnicSupermarket/error-prone-support/pulls diff --git a/run-branch-mutation-tests.sh b/run-branch-mutation-tests.sh new file mode 100755 index 0000000000..d71e83f792 --- /dev/null +++ b/run-branch-mutation-tests.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Executes Pitest to determine the mutation test coverage of changed code. By +# default code that is changed relative to the default branch is exercised, +# though another change set may be specified; see the Arcmutate Git integration +# documentation for details [1]. The results are found in each Maven module's +# `target/pit-reports` directory. +# +# [1] https://docs.arcmutate.com/docs/git-integration.html + +set -e -u -o pipefail + +if [ "${#}" -gt 1 ]; then + echo "Usage: ${0} [DiffSpec]" + exit 1 +fi + +diffSpec="${1:-+GIT(from[refs/remotes/origin/HEAD])}" + +mvn clean test-compile pitest:mutationCoverage \ + -DargLine.xmx=2048m \ + -Dverification.skip \ + -Dfeatures="${diffSpec}" diff --git a/run-mutation-tests.sh b/run-mutation-tests.sh index eb7a095ee6..9da338cf83 100755 --- a/run-mutation-tests.sh +++ b/run-mutation-tests.sh @@ -13,9 +13,7 @@ fi targetTests="${1:-*}" -mvn clean test pitest:mutationCoverage \ +mvn clean test-compile pitest:mutationCoverage \ -DargLine.xmx=2048m \ -Dverification.skip \ - -Dsurefire.failIfNoSpecifiedTests=false \ - -Dtest="${targetTests}" \ -DtargetTests="${targetTests}" From 469a4677249c1a374180031ef3e37b12d55123a3 Mon Sep 17 00:00:00 2001 From: Stephan Schroevers Date: Sat, 26 Aug 2023 13:43:30 +0300 Subject: [PATCH 2/2] Proposal --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5fb888f8d9..f84b25250d 100644 --- a/README.md +++ b/README.md @@ -223,10 +223,13 @@ Other highly relevant commands: Before running this command, make sure to have installed the project (`mvn clean install`) and make sure that the current working directory does not contain unstaged or uncommited changes. -- [`./run-mutation-tests.sh`][script-run-mutation-tests] runs mutation tests - using [Pitest][pitest]. The results can be reviewed by opening the respective - `target/pit-reports/index.html` files. For more information check the [PIT - Maven plugin][pitest-maven]. +- [`./run-branch-mutation-tests.sh`][script-run-branch-mutation-tests] uses + [Pitest][pitest] to run mutation tests against code that is modified relative + to the upstream default branch. The results can be reviewed by opening the + respective `target/pit-reports/index.html` files. One can use + [`./run-mutation-tests.sh`][script-run-mutation-tests] to run mutation tests + against _all_ code in the current working directory. For more information + check the [PIT Maven plugin][pitest-maven]. When running the project's tests in IntelliJ IDEA, you might see the following error: @@ -296,6 +299,7 @@ channel; please see our [security policy][security] for details. [reproducible-builds-badge]: https://img.shields.io/badge/Reproducible_Builds-ok-success?labelColor=1e5b96 [reproducible-builds-report]: https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/tech/picnic/error-prone-support/error-prone-support/README.md [script-apply-error-prone-suggestions]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/apply-error-prone-suggestions.sh +[script-run-branch-mutation-tests]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-branch-mutation-tests.sh [script-run-full-build]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-full-build.sh [script-run-mutation-tests]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/run-mutation-tests.sh [security]: https://github.com/PicnicSupermarket/error-prone-support/blob/master/SECURITY.md