1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.common.junit48;
20
21 import java.util.Collection;
22 import java.util.LinkedHashSet;
23
24 import org.apache.maven.surefire.api.testset.ResolvedTest;
25 import org.apache.maven.surefire.api.testset.TestListResolver;
26 import org.junit.runner.Description;
27 import org.junit.runner.manipulation.Filter;
28
29 final class MethodFilter extends Filter {
30 private final CombinedCategoryFilter combinedFilter;
31
32 MethodFilter(String requestString) {
33 this(new TestListResolver(requestString));
34 }
35
36 MethodFilter(TestListResolver testResolver) {
37 Collection<Filter> includedFilters = new LinkedHashSet<>();
38 Collection<Filter> excludedFilters = new LinkedHashSet<>();
39 for (ResolvedTest test : testResolver.getIncludedPatterns()) {
40 includedFilters.add(new RequestedTest(test, true));
41 }
42 for (ResolvedTest test : testResolver.getExcludedPatterns()) {
43 excludedFilters.add(new RequestedTest(test, false));
44 }
45 combinedFilter = new CombinedCategoryFilter(includedFilters, excludedFilters);
46 }
47
48 @Override
49 public boolean shouldRun(Description description) {
50 if (description.isEmpty()) {
51 return false;
52 } else if (description.isTest()) {
53 return combinedFilter.shouldRun(description);
54 } else {
55 for (Description o : description.getChildren()) {
56 if (combinedFilter.shouldRun(o) || shouldRun(o)) {
57 return true;
58 }
59 }
60 return false;
61 }
62 }
63
64 @Override
65 public String describe() {
66 return combinedFilter.describe();
67 }
68 }