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