1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.util.filter;
20
21 import java.util.LinkedList;
22 import java.util.List;
23
24 import org.eclipse.aether.graph.DependencyNode;
25 import org.eclipse.aether.internal.test.util.NodeBuilder;
26 import org.eclipse.aether.util.version.GenericVersionScheme;
27 import org.eclipse.aether.version.VersionScheme;
28 import org.junit.jupiter.api.Test;
29
30 import static org.junit.jupiter.api.Assertions.*;
31
32 public class PatternExclusionsDependencyFilterTest {
33
34 @Test
35 void acceptTestCornerCases() {
36 NodeBuilder builder = new NodeBuilder();
37 builder.artifactId("testArtifact");
38 DependencyNode node = builder.build();
39 List<DependencyNode> parents = new LinkedList<>();
40
41
42 assertTrue(dontAccept(node, ""));
43 assertTrue(new PatternExclusionsDependencyFilter(new LinkedList<String>()).accept(node, parents));
44 assertTrue(new PatternExclusionsDependencyFilter((String[]) null).accept(node, parents));
45 assertTrue(new PatternExclusionsDependencyFilter((VersionScheme) null, "[1,10]").accept(node, parents));
46 }
47
48 @Test
49 void acceptTestMatches() {
50 NodeBuilder builder = new NodeBuilder();
51 builder.groupId("com.example.test")
52 .artifactId("testArtifact")
53 .ext("jar")
54 .version("1.0.3");
55 DependencyNode node = builder.build();
56
57
58 assertTrue(
59 dontAccept(node, "com.example.test:testArtifact:jar:1.0.3"), "com.example.test:testArtifact:jar:1.0.3");
60
61
62 assertTrue(dontAccept(node, "*:testArtifact:jar:1.0.3"), "*:testArtifact:jar:1.0.3");
63 assertTrue(dontAccept(node, "com.example.test:*:jar:1.0.3"), "com.example.test:*:jar:1.0.3");
64 assertTrue(dontAccept(node, "com.example.test:testArtifact:*:1.0.3"), "com.example.test:testArtifact:*:1.0.3");
65 assertTrue(dontAccept(node, "com.example.test:testArtifact:*:1.0.3"), "com.example.test:testArtifact:*:1.0.3");
66
67
68 assertTrue(dontAccept(node, ":testArtifact:jar:1.0.3"), ":testArtifact:jar:1.0.3");
69 assertTrue(dontAccept(node, "com.example.test::jar:1.0.3"), "com.example.test::jar:1.0.3");
70 assertTrue(dontAccept(node, "com.example.test:testArtifact::1.0.3"), "com.example.test:testArtifact::1.0.3");
71 assertTrue(dontAccept(node, "com.example.test:testArtifact:jar:"), "com.example.test:testArtifact:jar:");
72
73
74 assertTrue(dontAccept(node, "*:*:jar:1.0.3"), "*:*:jar:1.0.3");
75 assertTrue(dontAccept(node, "com.example.test:*:*:1.0.3"), "com.example.test:*:*:1.0.3");
76 assertTrue(dontAccept(node, "com.example.test:testArtifact:*:*"), "com.example.test:testArtifact:*:*");
77 assertTrue(dontAccept(node, "*:testArtifact:jar:*"), "*:testArtifact:jar:*");
78 assertTrue(dontAccept(node, "*:*:jar:*"), "*:*:jar:*");
79 assertTrue(dontAccept(node, ":*:jar:"), ":*:jar:");
80
81
82 assertTrue(dontAccept(node, "*.example.test:testArtifact:jar:1.0.3"), "*.example.test:testArtifact:jar:1.0.3");
83 assertTrue(
84 dontAccept(node, "com.example.test:testArtifact:*ar:1.0.*"), "com.example.test:testArtifact:*ar:1.0.*");
85 assertTrue(
86 dontAccept(node, "com.example.test:testArtifact:jar:1.0.*"), "com.example.test:testArtifact:jar:1.0.*");
87 assertTrue(dontAccept(node, "*.example.*:testArtifact:jar:1.0.3"), "*.example.*:testArtifact:jar:1.0.3");
88
89
90 assertTrue(
91 dontAccept(node, "com.example.test*:testArtifact:jar:1.0.3"),
92 "com.example.test*:testArtifact:jar:1.0.3");
93 }
94
95 @Test
96 void acceptTestLessToken() {
97 NodeBuilder builder = new NodeBuilder();
98 builder.groupId("com.example.test")
99 .artifactId("testArtifact")
100 .ext("jar")
101 .version("1.0.3");
102 DependencyNode node = builder.build();
103
104 assertTrue(dontAccept(node, "com.example.test:testArtifact:jar"), "com.example.test:testArtifact:jar");
105 assertTrue(dontAccept(node, "com.example.test:testArtifact"), "com.example.test:testArtifact");
106 assertTrue(dontAccept(node, "com.example.test"), "com.example.test");
107
108 assertFalse(dontAccept(node, "com.example.foo"), "com.example.foo");
109 }
110
111 @Test
112 void acceptTestMismatch() {
113 NodeBuilder builder = new NodeBuilder();
114 builder.groupId("com.example.test")
115 .artifactId("testArtifact")
116 .ext("jar")
117 .version("1.0.3");
118 DependencyNode node = builder.build();
119
120 assertFalse(dontAccept(node, "OTHER.GROUP.ID:testArtifact:jar:1.0.3"), "OTHER.GROUP.ID:testArtifact:jar:1.0.3");
121 assertFalse(
122 dontAccept(node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3"),
123 "com.example.test:OTHER_ARTIFACT:jar:1.0.3");
124 assertFalse(
125 dontAccept(node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3"),
126 "com.example.test:OTHER_ARTIFACT:jar:1.0.3");
127 assertFalse(
128 dontAccept(node, "com.example.test:testArtifact:WAR:1.0.3"), "com.example.test:testArtifact:WAR:1.0.3");
129 assertFalse(
130 dontAccept(node, "com.example.test:testArtifact:jar:SNAPSHOT"),
131 "com.example.test:testArtifact:jar:SNAPSHOT");
132
133 assertFalse(dontAccept(node, "*:*:war:*"), "*:*:war:*");
134 assertFalse(dontAccept(node, "OTHER.GROUP.ID"), "OTHER.GROUP.ID");
135 }
136
137 @Test
138 void acceptTestMoreToken() {
139 NodeBuilder builder = new NodeBuilder();
140 builder.groupId("com.example.test")
141 .artifactId("testArtifact")
142 .ext("jar")
143 .version("1.0.3");
144
145 DependencyNode node = builder.build();
146 assertFalse(
147 dontAccept(node, "com.example.test:testArtifact:jar:1.0.3:foo"),
148 "com.example.test:testArtifact:jar:1.0.3:foo");
149 }
150
151 @Test
152 void acceptTestRange() {
153 NodeBuilder builder = new NodeBuilder();
154 builder.groupId("com.example.test")
155 .artifactId("testArtifact")
156 .ext("jar")
157 .version("1.0.3");
158 DependencyNode node = builder.build();
159
160 String prefix = "com.example.test:testArtifact:jar:";
161
162 assertTrue(dontAcceptVersionRange(node, prefix + "[1.0.3,1.0.4)"), prefix + "[1.0.3,1.0.4)");
163 assertTrue(dontAcceptVersionRange(node, prefix + "[1.0.3,)"), prefix + "[1.0.3,)");
164 assertTrue(dontAcceptVersionRange(node, prefix + "[1.0.3,]"), prefix + "[1.0.3,]");
165 assertTrue(dontAcceptVersionRange(node, prefix + "(,1.0.3]"), prefix + "(,1.0.3]");
166 assertTrue(dontAcceptVersionRange(node, prefix + "[1.0,]"), prefix + "[1.0,]");
167 assertTrue(dontAcceptVersionRange(node, prefix + "[1,4]"), prefix + "[1,4]");
168 assertTrue(dontAcceptVersionRange(node, prefix + "(1,4)"), prefix + "(1,4)");
169
170 assertTrue(dontAcceptVersionRange(node, prefix + "(1.0.2,1.0.3]", prefix + "(1.1,)"), prefix + "(1.0.2,1.0.3]");
171
172 assertFalse(dontAcceptVersionRange(node, prefix + "(1.0.3,2.0]"), prefix + "(1.0.3,2.0]");
173 assertFalse(dontAcceptVersionRange(node, prefix + "(1,1.0.2]"), prefix + "(1,1.0.2]");
174
175 assertFalse(
176 dontAcceptVersionRange(node, prefix + "(1.0.2,1.0.3)", prefix + "(1.0.3,)"), prefix + "(1.0.2,1.0.3)");
177 }
178
179 private boolean dontAccept(DependencyNode node, String expression) {
180 return !new PatternExclusionsDependencyFilter(expression).accept(node, new LinkedList<>());
181 }
182
183 private boolean dontAcceptVersionRange(DependencyNode node, String... expression) {
184 return !new PatternExclusionsDependencyFilter(new GenericVersionScheme(), expression)
185 .accept(node, new LinkedList<>());
186 }
187 }