1 package org.apache.maven.surefire.common.junit4;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.HashSet;
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.Set;
26
27 import org.apache.maven.surefire.api.util.internal.ClassMethod;
28 import org.junit.runner.Description;
29 import org.junit.runner.manipulation.Filter;
30 import org.junit.runner.notification.Failure;
31
32 import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractClassName;
33 import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractMethodName;
34 import static org.junit.runner.Description.TEST_MECHANISM;
35
36
37
38
39
40
41
42
43 public final class JUnit4ProviderUtil
44 {
45 private JUnit4ProviderUtil()
46 {
47 throw new IllegalStateException( "Cannot instantiate." );
48 }
49
50
51
52
53
54
55
56 public static Set<Description> generateFailingTestDescriptions( List<Failure> allFailures )
57 {
58 Set<Description> failingTestDescriptions = new HashSet<>();
59
60 for ( Failure failure : allFailures )
61 {
62 Description description = failure.getDescription();
63 if ( description.isTest() && !isFailureInsideJUnitItself( description ) )
64 {
65 failingTestDescriptions.add( description );
66 }
67 }
68 return failingTestDescriptions;
69 }
70
71 public static boolean isFailureInsideJUnitItself( Description failure )
72 {
73 return TEST_MECHANISM.equals( failure );
74 }
75
76
77
78
79
80
81 public static ClassMethod toClassMethod( Description description )
82 {
83 String clazz = extractClassName( description.getDisplayName() );
84 if ( clazz == null || isInsaneJunitNullString( clazz ) )
85 {
86
87 Iterator<Description> it = description.getChildren().iterator();
88 if ( it.hasNext() )
89 {
90 description = it.next();
91 clazz = extractClassName( description.getDisplayName() );
92 }
93 if ( clazz == null )
94 {
95 clazz = "Test Instantiation Error";
96 }
97 }
98 String method = extractMethodName( description.getDisplayName() );
99 return new ClassMethod( clazz, method );
100 }
101
102 private static boolean isInsaneJunitNullString( String value )
103 {
104 return "null".equals( value );
105 }
106
107 public static Filter createMatchAnyDescriptionFilter( Iterable<Description> descriptions )
108 {
109 return new MatchDescriptions( descriptions );
110 }
111 }