From a171784e2549030130583ff266fbc6b9f583dd06 Mon Sep 17 00:00:00 2001 From: Henry Coles Date: Tue, 19 Sep 2023 14:39:42 +0100 Subject: [PATCH] extra features param for maven Additional parameter extraFeatures allowed features to be added from the commandline without overwriting/needing to respecify features set within the pom.xml --- .../org/pitest/maven/AbstractPitMojo.java | 22 +++++++++++++++++-- .../java/org/pitest/maven/PitMojoTest.java | 17 ++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/pitest-maven/src/main/java/org/pitest/maven/AbstractPitMojo.java b/pitest-maven/src/main/java/org/pitest/maven/AbstractPitMojo.java index aa280f552..b5a4f806e 100644 --- a/pitest-maven/src/main/java/org/pitest/maven/AbstractPitMojo.java +++ b/pitest-maven/src/main/java/org/pitest/maven/AbstractPitMojo.java @@ -136,11 +136,19 @@ public class AbstractPitMojo extends AbstractMojo { private ArrayList mutators; /** - * Mutation operators to apply + * Features to activate/deactivate */ @Parameter(property = "features") private ArrayList features; + /** + * Additional features activate/deactivate, use to + * avoid overwriting features set in the build script when + * specifying features from the command line + */ + @Parameter(property = "extraFeatures") + private ArrayList extraFeatures; + /** * Weighting to allow for timeouts @@ -739,7 +747,9 @@ public ArrayList getExcludedRunners() { } public ArrayList getFeatures() { - return withoutNulls(features); + ArrayList consolidated = emptyWithoutNulls(features); + consolidated.addAll(emptyWithoutNulls(extraFeatures)); + return consolidated; } public boolean isUseClasspathJar() { @@ -778,6 +788,14 @@ public List getReasons() { } } + private ArrayList emptyWithoutNulls(List originalList) { + if (originalList == null) { + return new ArrayList<>(); + } + + return withoutNulls(originalList); + } + private ArrayList withoutNulls(List originalList) { if (originalList == null) { return null; diff --git a/pitest-maven/src/test/java/org/pitest/maven/PitMojoTest.java b/pitest-maven/src/test/java/org/pitest/maven/PitMojoTest.java index 8759f6137..e187f79bd 100644 --- a/pitest-maven/src/test/java/org/pitest/maven/PitMojoTest.java +++ b/pitest-maven/src/test/java/org/pitest/maven/PitMojoTest.java @@ -394,6 +394,23 @@ public void testEmptyFeatureIsIgnored() throws Exception { mojo.getFeatures()); } + public void testCombinesFeaturesAndExtraFeatures() throws Exception { + + AbstractPitMojo mojo = createPITMojo(createPomWithConfiguration("\n" + + " \n" + + " FEATURE\n" + + " \n" + + " \n" + + " ALSO_A_FEATURE\n" + + " MORE\n" + + " \n" + )); + + assertEquals( + asList("FEATURE", "ALSO_A_FEATURE", "MORE"), + mojo.getFeatures()); + } + private void setupCoverage(long mutationScore, int lines, int linesCovered) throws MojoExecutionException { Iterable scores = Collections.emptyList();