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 PatternInclusionsDependencyFilterTest extends AbstractDependencyFilterTest {
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(accept(node, ""));
43 assertFalse(new PatternInclusionsDependencyFilter(new LinkedList<String>()).accept(node, parents));
44 assertFalse(new PatternInclusionsDependencyFilter((String[]) null).accept(node, parents));
45 assertFalse(new PatternInclusionsDependencyFilter((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(accept(node, "com.example.test:testArtifact:jar:1.0.3"), "com.example.test:testArtifact:jar:1.0.3");
59
60
61 assertTrue(accept(node, "*:testArtifact:jar:1.0.3"), "*:testArtifact:jar:1.0.3");
62 assertTrue(accept(node, "com.example.test:*:jar:1.0.3"), "com.example.test:*:jar:1.0.3");
63 assertTrue(accept(node, "com.example.test:testArtifact:*:1.0.3"), "com.example.test:testArtifact:*:1.0.3");
64 assertTrue(accept(node, "com.example.test:testArtifact:*:1.0.3"), "com.example.test:testArtifact:*:1.0.3");
65
66
67 assertTrue(accept(node, ":testArtifact:jar:1.0.3"), ":testArtifact:jar:1.0.3");
68 assertTrue(accept(node, "com.example.test::jar:1.0.3"), "com.example.test::jar:1.0.3");
69 assertTrue(accept(node, "com.example.test:testArtifact::1.0.3"), "com.example.test:testArtifact::1.0.3");
70 assertTrue(accept(node, "com.example.test:testArtifact:jar:"), "com.example.test:testArtifact:jar:");
71
72
73 assertTrue(accept(node, "*:*:jar:1.0.3"), "*:*:jar:1.0.3");
74 assertTrue(accept(node, "com.example.test:*:*:1.0.3"), "com.example.test:*:*:1.0.3");
75 assertTrue(accept(node, "com.example.test:testArtifact:*:*"), "com.example.test:testArtifact:*:*");
76 assertTrue(accept(node, "*:testArtifact:jar:*"), "*:testArtifact:jar:*");
77 assertTrue(accept(node, "*:*:jar:*"), "*:*:jar:*");
78 assertTrue(accept(node, ":*:jar:"), ":*:jar:");
79
80
81 assertTrue(accept(node, "*.example.test:testArtifact:jar:1.0.3"), "*.example.test:testArtifact:jar:1.0.3");
82 assertTrue(accept(node, "com.example.test:testArtifact:*ar:1.0.*"), "com.example.test:testArtifact:*ar:1.0.*");
83 assertTrue(accept(node, "com.example.test:testArtifact:jar:1.0.*"), "com.example.test:testArtifact:jar:1.0.*");
84 assertTrue(accept(node, "*.example.*:testArtifact:jar:1.0.3"), "*.example.*:testArtifact:jar:1.0.3");
85
86
87 assertTrue(
88 accept(node, "com.example.test*:testArtifact:jar:1.0.3"), "com.example.test*:testArtifact:jar:1.0.3");
89 }
90
91 @Test
92 void acceptTestLessToken() {
93 NodeBuilder builder = new NodeBuilder();
94 builder.groupId("com.example.test")
95 .artifactId("testArtifact")
96 .ext("jar")
97 .version("1.0.3");
98 DependencyNode node = builder.build();
99
100 assertTrue(accept(node, "com.example.test:testArtifact:jar"), "com.example.test:testArtifact:jar");
101 assertTrue(accept(node, "com.example.test:testArtifact"), "com.example.test:testArtifact");
102 assertTrue(accept(node, "com.example.test"), "com.example.test");
103
104 assertFalse(accept(node, "com.example.foo"), "com.example.foo");
105 }
106
107 @Test
108 void acceptTestMissmatch() {
109 NodeBuilder builder = new NodeBuilder();
110 builder.groupId("com.example.test")
111 .artifactId("testArtifact")
112 .ext("jar")
113 .version("1.0.3");
114 DependencyNode node = builder.build();
115
116 assertFalse(accept(node, "OTHER.GROUP.ID:testArtifact:jar:1.0.3"), "OTHER.GROUP.ID:testArtifact:jar:1.0.3");
117 assertFalse(
118 accept(node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3"), "com.example.test:OTHER_ARTIFACT:jar:1.0.3");
119 assertFalse(
120 accept(node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3"), "com.example.test:OTHER_ARTIFACT:jar:1.0.3");
121 assertFalse(accept(node, "com.example.test:testArtifact:WAR:1.0.3"), "com.example.test:testArtifact:WAR:1.0.3");
122 assertFalse(
123 accept(node, "com.example.test:testArtifact:jar:SNAPSHOT"),
124 "com.example.test:testArtifact:jar:SNAPSHOT");
125
126 assertFalse(accept(node, "*:*:war:*"), "*:*:war:*");
127 assertFalse(accept(node, "OTHER.GROUP.ID"), "OTHER.GROUP.ID");
128 }
129
130 @Test
131 void acceptTestMoreToken() {
132 NodeBuilder builder = new NodeBuilder();
133 builder.groupId("com.example.test")
134 .artifactId("testArtifact")
135 .ext("jar")
136 .version("1.0.3");
137
138 DependencyNode node = builder.build();
139 assertFalse(
140 accept(node, "com.example.test:testArtifact:jar:1.0.3:foo"),
141 "com.example.test:testArtifact:jar:1.0.3:foo");
142 }
143
144 @Test
145 void acceptTestRange() {
146 NodeBuilder builder = new NodeBuilder();
147 builder.groupId("com.example.test")
148 .artifactId("testArtifact")
149 .ext("jar")
150 .version("1.0.3");
151 DependencyNode node = builder.build();
152
153 String prefix = "com.example.test:testArtifact:jar:";
154
155 assertTrue(acceptVersionRange(node, prefix + "[1.0.3,1.0.4)"), prefix + "[1.0.3,1.0.4)");
156 assertTrue(acceptVersionRange(node, prefix + "[1.0.3,)"), prefix + "[1.0.3,)");
157 assertTrue(acceptVersionRange(node, prefix + "[1.0.3,]"), prefix + "[1.0.3,]");
158 assertTrue(acceptVersionRange(node, prefix + "(,1.0.3]"), prefix + "(,1.0.3]");
159 assertTrue(acceptVersionRange(node, prefix + "[1.0,]"), prefix + "[1.0,]");
160 assertTrue(acceptVersionRange(node, prefix + "[1,4]"), prefix + "[1,4]");
161 assertTrue(acceptVersionRange(node, prefix + "(1,4)"), prefix + "(1,4)");
162
163 assertTrue(acceptVersionRange(node, prefix + "(1.0.2,1.0.3]", prefix + "(1.1,)"), prefix + "(1.0.2,1.0.3]");
164
165 assertFalse(acceptVersionRange(node, prefix + "(1.0.3,2.0]"), prefix + "(1.0.3,2.0]");
166 assertFalse(acceptVersionRange(node, prefix + "(1,1.0.2]"), prefix + "(1,1.0.2]");
167
168 assertFalse(acceptVersionRange(node, prefix + "(1.0.2,1.0.3)", prefix + "(1.0.3,)"), prefix + "(1.0.2,1.0.3)");
169 }
170
171 public boolean accept(DependencyNode node, String expression) {
172 return new PatternInclusionsDependencyFilter(expression).accept(node, new LinkedList<>());
173 }
174
175 public boolean acceptVersionRange(DependencyNode node, String... expression) {
176 return new PatternInclusionsDependencyFilter(new GenericVersionScheme(), expression)
177 .accept(node, new LinkedList<>());
178 }
179 }