Skip to content

Commit 50652ea

Browse files
authored
Merge pull request #1436 from hcoles/feature/junit_filtering
allow filtering by runner
2 parents f38dda2 + d9e07c3 commit 50652ea

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

pitest/src/main/java/org/pitest/junit/JUnitCustomRunnerTestUnitFinder.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Optional;
2626
import java.util.Set;
2727
import java.util.function.Function;
28+
import java.util.function.Predicate;
2829
import java.util.stream.Collectors;
2930
import java.util.stream.Stream;
3031

@@ -58,21 +59,32 @@ public class JUnitCustomRunnerTestUnitFinder implements TestUnitFinder {
5859
private final TestGroupConfig config;
5960
private final Collection<String> excludedRunners;
6061
private final Collection<String> includedTestMethods;
62+
private final Predicate<Class<?>> allow;
6163

62-
JUnitCustomRunnerTestUnitFinder(TestGroupConfig config, final Collection<String> excludedRunners,
63-
final Collection<String> includedTestMethods) {
64+
65+
public JUnitCustomRunnerTestUnitFinder(TestGroupConfig config,
66+
Collection<String> excludedRunners,
67+
Collection<String> includedTestMethods) {
68+
this(config, excludedRunners, includedTestMethods, r -> true);
69+
}
70+
71+
public JUnitCustomRunnerTestUnitFinder(TestGroupConfig config,
72+
Collection<String> excludedRunners,
73+
Collection<String> includedTestMethods,
74+
Predicate<Class<?>> filter) {
6475
Objects.requireNonNull(config);
6576
this.config = config;
6677
this.excludedRunners = excludedRunners;
6778
this.includedTestMethods = includedTestMethods;
79+
this.allow = filter;
6880
}
6981

7082
@Override
7183
public List<TestUnit> findTestUnits(final Class<?> clazz, TestUnitExecutionListener unused) {
7284

7385
final Runner runner = AdaptedJUnitTestUnit.createRunner(clazz);
7486

75-
if (isExcluded(runner) || isNotARunnableTest(runner, clazz.getName()) || !isIncluded(clazz)) {
87+
if (!allow.test(runner.getClass()) || isExcluded(runner) || isNotARunnableTest(runner, clazz.getName()) || !isIncluded(clazz)) {
7688
if (Log.verbosity().showMinionOutput() && runner instanceof ErrorReportingRunner) {
7789
showJUnitErrors(clazz, runner);
7890
}
@@ -148,8 +160,7 @@ private Function<Category, Stream<String>> toCategoryNames() {
148160
};
149161
}
150162

151-
private boolean isNotARunnableTest(final Runner runner,
152-
final String className) {
163+
private boolean isNotARunnableTest(Runner runner, String className) {
153164
try {
154165
return (runner == null)
155166
|| runner.getClass().isAssignableFrom(ErrorReportingRunner.class)

0 commit comments

Comments
 (0)