16
16
17
17
package io .helidon .build .maven .enforcer .rules ;
18
18
19
+ import java .util .ArrayList ;
20
+ import java .util .List ;
21
+ import java .util .Set ;
22
+ import java .util .function .Supplier ;
23
+ import java .util .logging .Level ;
24
+ import java .util .logging .Logger ;
25
+ import java .util .stream .Collectors ;
26
+ import java .util .stream .Stream ;
27
+
28
+ import org .apache .maven .artifact .Artifact ;
29
+ import org .apache .maven .enforcer .rule .api .EnforcerLogger ;
30
+ import org .apache .maven .project .MavenProject ;
19
31
import org .junit .jupiter .api .Test ;
20
32
21
33
import static io .helidon .build .maven .enforcer .rules .HelidonDependenciesRule .checkNamespace ;
22
34
import static org .hamcrest .CoreMatchers .equalTo ;
35
+ import static org .hamcrest .CoreMatchers .is ;
23
36
import static org .hamcrest .MatcherAssert .assertThat ;
37
+ import static org .hamcrest .Matchers .containsInAnyOrder ;
38
+ import static org .hamcrest .Matchers .startsWith ;
24
39
import static org .junit .jupiter .api .Assertions .assertThrows ;
25
40
26
41
class HelidonDependencyRuleTest {
@@ -40,4 +55,105 @@ void testCheckNamespace() {
40
55
equalTo ("The namespace 'java' is invalid. Only valid namespace names are: 'jakarta' and 'javax'." ));
41
56
}
42
57
58
+ @ Test
59
+ void emptyGavExceptions () throws Exception {
60
+ MavenProject project = new MavenProject ();
61
+ Set <Artifact > artifacts =
62
+ Stream .of ("javax.inject:javax.inject:1" ,
63
+ "javax.crypto:javax.crypto:1" ,
64
+ "javax.servlet:javax.servlet-api:2.1.0" ,
65
+ "other.servlet:other.servlet:1" )
66
+ .map (DependencyIsValidCheck ::toArtifact )
67
+ .collect (Collectors .toSet ());
68
+ project .setArtifacts (artifacts );
69
+
70
+ HelidonDependenciesRule rule =
71
+ new HelidonDependenciesRule ();
72
+ rule .setLog (new TestingLogger ());
73
+ rule .setProject (project );
74
+
75
+ ViolationException e = assertThrows (ViolationException .class , rule ::execute );
76
+ assertThat (e .violations ().size (), is (2 ));
77
+
78
+ List <String > allowedList = new ArrayList <>();
79
+ allowedList .add ("" );
80
+ rule .setExcludedGavRegExs (allowedList );
81
+ e = assertThrows (ViolationException .class , rule ::execute );
82
+ assertThat (e .violations ().size (), is (2 ));
83
+ }
84
+
85
+ static class TestingLogger implements EnforcerLogger {
86
+ static final Logger LOGGER = Logger .getLogger (TestingLogger .class .getName ());
87
+
88
+ @ Override
89
+ public void warnOrError (CharSequence charSequence ) {
90
+ LOGGER .warning (charSequence .toString ());
91
+ }
92
+
93
+ @ Override
94
+ public void warnOrError (Supplier <CharSequence > supplier ) {
95
+ warnOrError (supplier .get ());
96
+ }
97
+
98
+ @ Override
99
+ public boolean isDebugEnabled () {
100
+ return LOGGER .isLoggable (Level .FINE );
101
+ }
102
+
103
+ @ Override
104
+ public void debug (CharSequence charSequence ) {
105
+ LOGGER .log (Level .FINE , charSequence .toString ());
106
+ }
107
+
108
+ @ Override
109
+ public void debug (Supplier <CharSequence > supplier ) {
110
+ debug (supplier .get ());
111
+ }
112
+
113
+ @ Override
114
+ public boolean isInfoEnabled () {
115
+ return LOGGER .isLoggable (Level .INFO );
116
+ }
117
+
118
+ @ Override
119
+ public void info (CharSequence charSequence ) {
120
+ LOGGER .log (Level .INFO , charSequence .toString ());
121
+ }
122
+
123
+ @ Override
124
+ public void info (Supplier <CharSequence > supplier ) {
125
+ info (supplier .get ());
126
+ }
127
+
128
+ @ Override
129
+ public boolean isWarnEnabled () {
130
+ return LOGGER .isLoggable (Level .WARNING );
131
+ }
132
+
133
+ @ Override
134
+ public void warn (CharSequence charSequence ) {
135
+ LOGGER .log (Level .WARNING , charSequence .toString ());
136
+ }
137
+
138
+ @ Override
139
+ public void warn (Supplier <CharSequence > supplier ) {
140
+ warn (supplier .get ());
141
+ }
142
+
143
+ @ Override
144
+ public boolean isErrorEnabled () {
145
+ return LOGGER .isLoggable (Level .SEVERE );
146
+ }
147
+
148
+ @ Override
149
+ public void error (CharSequence charSequence ) {
150
+ LOGGER .log (Level .SEVERE , charSequence .toString ());
151
+ }
152
+
153
+ @ Override
154
+ public void error (Supplier <CharSequence > supplier ) {
155
+ error (supplier .get ());
156
+ }
157
+ }
158
+
43
159
}
0 commit comments