diff --git a/pitest-command-line/src/main/java/org/pitest/mutationtest/commandline/OptionsParser.java b/pitest-command-line/src/main/java/org/pitest/mutationtest/commandline/OptionsParser.java index 1d275dcbb..1ce954289 100644 --- a/pitest-command-line/src/main/java/org/pitest/mutationtest/commandline/OptionsParser.java +++ b/pitest-command-line/src/main/java/org/pitest/mutationtest/commandline/OptionsParser.java @@ -56,6 +56,7 @@ import static org.pitest.mutationtest.config.ConfigOption.EXCLUDED_CLASSES; import static org.pitest.mutationtest.config.ConfigOption.EXCLUDED_GROUPS; import static org.pitest.mutationtest.config.ConfigOption.EXCLUDED_METHOD; +import static org.pitest.mutationtest.config.ConfigOption.EXCLUDED_RUNNERS; import static org.pitest.mutationtest.config.ConfigOption.EXCLUDED_TEST_CLASSES; import static org.pitest.mutationtest.config.ConfigOption.EXPORT_LINE_COVERAGE; import static org.pitest.mutationtest.config.ConfigOption.FAIL_WHEN_NOT_MUTATIONS; @@ -127,6 +128,8 @@ public class OptionsParser { private final ArgumentAcceptingOptionSpec failWhenNoMutations; private final ArgumentAcceptingOptionSpec skipFailingTests; private final ArgumentAcceptingOptionSpec codePaths; + + private final OptionSpec excludedRunnersSpec; private final OptionSpec excludedGroupsSpec; private final OptionSpec includedGroupsSpec; private final OptionSpec includedTestMethodsSpec; @@ -311,6 +314,10 @@ public OptionsParser(Predicate dependencyFilter) { .describedAs( "Globs identifying classpath roots containing mutable code"); + this.excludedRunnersSpec = parserAccepts(EXCLUDED_RUNNERS).withRequiredArg() + .ofType(String.class).withValuesSeparatedBy(',') + .describedAs("JUnit4 runners to exclude"); + this.includedGroupsSpec = parserAccepts(INCLUDED_GROUPS).withRequiredArg() .ofType(String.class).withValuesSeparatedBy(',') .describedAs("TestNG groups/JUnit categories to include"); @@ -474,6 +481,8 @@ private ParseResult parseCommandLine(final ReportOptions data, setTestGroups(userArgs, data); + data.setExcludedRunners(this.excludedRunnersSpec.values(userArgs)); + data.setIncludedTestMethods(this.includedTestMethodsSpec.values(userArgs)); data.setJavaExecutable(this.javaExecutable.value(userArgs)); diff --git a/pitest-command-line/src/test/java/org/pitest/mutationtest/commandline/OptionsParserTest.java b/pitest-command-line/src/test/java/org/pitest/mutationtest/commandline/OptionsParserTest.java index 216f0bb12..f3b9d533b 100644 --- a/pitest-command-line/src/test/java/org/pitest/mutationtest/commandline/OptionsParserTest.java +++ b/pitest-command-line/src/test/java/org/pitest/mutationtest/commandline/OptionsParserTest.java @@ -382,6 +382,13 @@ public void shouldParseCommaSeparatedListOfIncludedTestMethods() { .getIncludedTestMethods()); } + @Test + public void shouldParseCommaSeparatedListOfExcludedTestRunners() { + final ReportOptions actual = parseAddingRequiredArgs("--excludedRunners", + "foo,bar"); + assertThat(actual.getExcludedRunners()).containsExactly("foo", "bar"); + } + @Test public void shouldParseMutationUnitSize() { final ReportOptions actual = parseAddingRequiredArgs("--mutationUnitSize", diff --git a/pitest-entry/src/main/java/org/pitest/mutationtest/config/ConfigOption.java b/pitest-entry/src/main/java/org/pitest/mutationtest/config/ConfigOption.java index 4e8240430..682762c90 100644 --- a/pitest-entry/src/main/java/org/pitest/mutationtest/config/ConfigOption.java +++ b/pitest-entry/src/main/java/org/pitest/mutationtest/config/ConfigOption.java @@ -153,10 +153,15 @@ public enum ConfigOption { */ INCLUDED_TEST_METHODS("includedTestMethods"), /** - * TestNG groupsJUnit categories to exclude + * TestNG groups / JUnit categories to exclude */ EXCLUDED_GROUPS("excludedGroups"), + /** + * JUnit4 runners to exclude + */ + EXCLUDED_RUNNERS("excludedRunners"), + /** * Whether to compute a full mutation matrix. */