1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.dependency.utils;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Random;
25
26 import junit.framework.TestCase;
27 import org.apache.maven.artifact.Artifact;
28 import org.apache.maven.artifact.DefaultArtifact;
29 import org.apache.maven.artifact.handler.ArtifactHandler;
30 import org.apache.maven.artifact.versioning.VersionRange;
31 import org.apache.maven.plugin.logging.Log;
32 import org.apache.maven.plugin.testing.SilentLog;
33 import org.apache.maven.plugin.testing.stubs.DefaultArtifactHandlerStub;
34
35
36
37
38 public class TestDependencyUtil extends TestCase {
39 List<Artifact> artifacts = new ArrayList<>();
40
41 Log log = new SilentLog();
42
43 File outputFolder;
44
45 Artifact snap;
46
47 Artifact snapResolvedVersion;
48
49 Artifact release;
50
51 Artifact sources;
52
53 @Override
54 protected void setUp() throws Exception {
55 super.setUp();
56
57 ArtifactHandler ah = new DefaultArtifactHandlerStub("jar", null);
58 VersionRange vr = VersionRange.createFromVersion("1.1");
59 release = new DefaultArtifact("test", "one", vr, Artifact.SCOPE_COMPILE, "jar", "sources", ah, false);
60 artifacts.add(release);
61
62 ah = new DefaultArtifactHandlerStub("war", null);
63 vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
64 snap = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false);
65 artifacts.add(snap);
66
67 ah = new DefaultArtifactHandlerStub("war", null);
68 vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
69 snapResolvedVersion = new DefaultArtifact("test", "three", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false);
70 snapResolvedVersion.setResolvedVersion("1.1-20121003.035531-117");
71 artifacts.add(snapResolvedVersion);
72
73 ah = new DefaultArtifactHandlerStub("war", null);
74 vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
75 sources = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "sources", "sources", ah, false);
76
77
78 Random a = new Random();
79 outputFolder = new File("target/copy" + a.nextLong() + "/");
80 outputFolder.delete();
81 assertFalse(outputFolder.exists());
82 }
83
84 public void testDirectoryName() {
85 File folder = new File("target/a");
86 final Artifact artifact = artifacts.get(0);
87 File name =
88 DependencyUtil.getFormattedOutputDirectory(false, false, false, false, false, false, folder, artifact);
89
90 assertEquals(folder, name);
91
92 name = DependencyUtil.getFormattedOutputDirectory(false, false, false, true, false, false, folder, artifact);
93 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "one"
94 + File.separatorChar + "1.1";
95 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
96
97 name = DependencyUtil.getFormattedOutputDirectory(false, true, false, false, false, false, folder, artifact);
98 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars";
99 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
100
101 name = DependencyUtil.getFormattedOutputDirectory(true, false, false, false, false, false, folder, artifact);
102 expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile";
103 assertEquals(expectedResult, name.getAbsolutePath());
104 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
105
106 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, artifact);
107 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources-jar";
108 assertEquals(expectedResult, name.getAbsolutePath());
109
110 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, artifact);
111 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-jar";
112 assertEquals(expectedResult, name.getAbsolutePath());
113
114 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, artifact);
115 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources";
116 assertEquals(expectedResult, name.getAbsolutePath());
117
118 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, artifact);
119 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources";
120 assertEquals(expectedResult, name.getAbsolutePath());
121
122 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, false, folder, artifact);
123 expectedResult =
124 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources-jar";
125 assertEquals(expectedResult, name.getAbsolutePath());
126
127 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, false, folder, artifact);
128 expectedResult =
129 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources-jar";
130 assertEquals(expectedResult, name.getAbsolutePath());
131
132 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, true, folder, artifact);
133 expectedResult =
134 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources";
135 assertEquals(expectedResult, name.getAbsolutePath());
136
137 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, true, folder, artifact);
138 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources";
139 assertEquals(expectedResult, name.getAbsolutePath());
140
141 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, true, false, folder, artifact);
142 expectedResult =
143 folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources-jar";
144 assertEquals(expectedResult, name.getAbsolutePath());
145
146 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, false, true, folder, artifact);
147 expectedResult =
148 folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-1.1-sources";
149 assertEquals(expectedResult, name.getAbsolutePath());
150
151 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, true, true, folder, artifact);
152 expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources";
153 assertEquals(expectedResult, name.getAbsolutePath());
154 }
155
156 public void testDirectoryName2() {
157 File folder = new File("target/a");
158 final Artifact artifact = artifacts.get(1);
159 File name =
160 DependencyUtil.getFormattedOutputDirectory(false, false, false, false, false, false, folder, artifact);
161
162 assertEquals(folder, name);
163
164 name = DependencyUtil.getFormattedOutputDirectory(false, true, false, false, false, false, folder, artifact);
165 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars";
166 assertEquals(expectedResult, name.getAbsolutePath());
167
168 name = DependencyUtil.getFormattedOutputDirectory(false, false, false, true, false, false, folder, artifact);
169 expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "two"
170 + File.separatorChar + "1.1-SNAPSHOT";
171 assertEquals(expectedResult, name.getAbsolutePath());
172
173 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, artifact);
174 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-war";
175 assertEquals(expectedResult, name.getAbsolutePath());
176
177 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, false, folder, artifact);
178 expectedResult =
179 folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT-war";
180 assertEquals(expectedResult, name.getAbsolutePath());
181
182 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, artifact);
183 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-war";
184 assertEquals(expectedResult, name.getAbsolutePath());
185
186 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, artifact);
187 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT";
188 assertEquals(expectedResult, name.getAbsolutePath());
189
190 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, artifact);
191 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two";
192 assertEquals(expectedResult, name.getAbsolutePath());
193
194 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, false, folder, artifact);
195 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-war";
196 assertEquals(expectedResult, name.getAbsolutePath());
197
198 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, true, folder, artifact);
199 expectedResult =
200 folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT";
201 assertEquals(expectedResult, name.getAbsolutePath());
202
203 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, true, folder, artifact);
204 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two";
205 assertEquals(expectedResult, name.getAbsolutePath());
206 }
207
208 public void testDirectoryNameSources() {
209 File folder = new File("target/a");
210 File name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, sources);
211 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
212 assertEquals(expectedResult, name.getAbsolutePath());
213
214 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, sources);
215 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
216 assertEquals(expectedResult, name.getAbsolutePath());
217
218 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, sources);
219 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources";
220 assertEquals(expectedResult, name.getAbsolutePath());
221
222 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, sources);
223 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources";
224 assertEquals(expectedResult, name.getAbsolutePath());
225 }
226
227 public void testFileName() {
228 Artifact artifact = artifacts.get(0);
229
230 String name = DependencyUtil.getFormattedFileName(artifact, false);
231 String expectedResult = "one-1.1-sources.jar";
232 assertEquals(expectedResult, name);
233 name = DependencyUtil.getFormattedFileName(artifact, true);
234 expectedResult = "one-sources.jar";
235 assertEquals(expectedResult, name);
236 }
237
238 public void testFileNameUseBaseVersion() {
239 Artifact artifact = snapResolvedVersion;
240
241 String name = DependencyUtil.getFormattedFileName(artifact, false, false, true);
242 String expectedResult = "three-1.1-SNAPSHOT.war";
243 assertEquals(expectedResult, name);
244 name = DependencyUtil.getFormattedFileName(artifact, false, false, false);
245 expectedResult = "three-1.1-20121003.035531-117.war";
246 assertEquals(expectedResult, name);
247 }
248
249 public void testTestJar() {
250 ArtifactHandler ah = new DefaultArtifactHandlerStub("test-jar", null);
251 VersionRange vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
252 Artifact artifact =
253 new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "test-jar", null, ah, false);
254
255 String name = DependencyUtil.getFormattedFileName(artifact, false);
256 String expectedResult = "two-1.1-SNAPSHOT.jar";
257 assertEquals(expectedResult, name);
258 }
259
260 public void testFileNameClassifier() {
261 ArtifactHandler ah = new DefaultArtifactHandlerStub("jar", "sources");
262 VersionRange vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
263 Artifact artifact =
264 new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "jar", "sources", ah, false);
265
266 String name = DependencyUtil.getFormattedFileName(artifact, false);
267 String expectedResult = "two-1.1-SNAPSHOT-sources.jar";
268 assertEquals(expectedResult, name);
269
270 name = DependencyUtil.getFormattedFileName(artifact, true);
271 expectedResult = "two-sources.jar";
272 assertEquals(expectedResult, name);
273
274 name = DependencyUtil.getFormattedFileName(artifact, false, false, false, true);
275 expectedResult = "two-1.1-SNAPSHOT.jar";
276 assertEquals(expectedResult, name);
277
278 ah = new DefaultArtifactHandlerStub("war", null);
279 artifact = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false);
280 name = DependencyUtil.getFormattedFileName(artifact, true);
281 expectedResult = "two.war";
282 assertEquals(expectedResult, name);
283 }
284
285 public void testFileNameClassifierWithFile() {
286
287
288
289
290 ArtifactHandler ah = new DefaultArtifactHandlerStub("war", "sources");
291 VersionRange vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
292 Artifact artifact =
293 new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "sources", ah, false);
294 File file = new File("/target", "test-file-name.jar");
295 artifact.setFile(file);
296
297 String name = DependencyUtil.getFormattedFileName(artifact, false);
298 String expectedResult = "two-1.1-SNAPSHOT-sources.war";
299 assertEquals(expectedResult, name);
300
301 name = DependencyUtil.getFormattedFileName(artifact, false, false, false, true);
302 expectedResult = "two-1.1-SNAPSHOT.war";
303 assertEquals(expectedResult, name);
304
305 name = DependencyUtil.getFormattedFileName(artifact, true);
306 expectedResult = "two-sources.war";
307 assertEquals(expectedResult, name);
308
309 artifact = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false);
310 name = DependencyUtil.getFormattedFileName(artifact, true);
311 expectedResult = "two.war";
312 assertEquals(expectedResult, name);
313
314
315 ah = new DefaultArtifactHandlerStub("jar", null);
316 artifact = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false);
317 name = DependencyUtil.getFormattedFileName(artifact, true);
318 expectedResult = "two.jar";
319 assertEquals(expectedResult, name);
320 }
321
322 public void testTokenizer() {
323 String[] tokens = DependencyUtil.tokenizer(" alpha,bravo, charlie , delta kappa, theta");
324 String[] expected = new String[] {"alpha", "bravo", "charlie", "delta kappa", "theta"};
325
326 assertEquals(String.join(", ", expected), String.join(", ", tokens));
327 assertEquals(expected.length, tokens.length);
328
329 tokens = DependencyUtil.tokenizer(" \r\n a, \t \n \r b \t \n \r");
330 assertEquals(2, tokens.length);
331 assertEquals("a", tokens[0]);
332 assertEquals("b", tokens[1]);
333
334 tokens = DependencyUtil.tokenizer(null);
335 assertEquals(0, tokens.length);
336
337 tokens = DependencyUtil.tokenizer(" ");
338 assertEquals(0, tokens.length);
339 }
340 }