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
23 import org.apache.maven.artifact.Artifact;
24 import org.apache.maven.artifact.DefaultArtifact;
25 import org.apache.maven.artifact.handler.ArtifactHandler;
26 import org.apache.maven.artifact.versioning.VersionRange;
27 import org.apache.maven.plugin.testing.stubs.DefaultArtifactHandlerStub;
28 import org.junit.jupiter.api.BeforeEach;
29 import org.junit.jupiter.api.Test;
30 import org.junit.jupiter.api.io.TempDir;
31
32 import static org.assertj.core.api.Assertions.assertThat;
33 import static org.junit.jupiter.api.Assertions.assertEquals;
34 import static org.junit.jupiter.api.Assertions.assertTrue;
35
36
37
38
39 class TestDependencyUtil {
40
41 private static final String TEST_CONTENT =
42 "Test line 1" + System.lineSeparator() + "Test line 2" + System.lineSeparator();
43
44 @TempDir
45 File temDir;
46
47 Artifact snap;
48
49 Artifact snapResolvedVersion;
50
51 Artifact release;
52
53 Artifact sources;
54
55 @BeforeEach
56 void 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
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
66 ah = new DefaultArtifactHandlerStub("war", null);
67 vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
68 snapResolvedVersion = new DefaultArtifact("test", "three", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false);
69 snapResolvedVersion.setResolvedVersion("1.1-20121003.035531-117");
70
71 ah = new DefaultArtifactHandlerStub("war", null);
72 vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
73 sources = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "sources", "sources", ah, false);
74 }
75
76 @Test
77 void directoryName() {
78 File folder = new File("target/a");
79 final Artifact artifact = release;
80 File name =
81 DependencyUtil.getFormattedOutputDirectory(false, false, false, false, false, false, folder, artifact);
82
83 assertEquals(folder, name);
84
85 name = DependencyUtil.getFormattedOutputDirectory(false, false, false, true, false, false, folder, artifact);
86 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "one"
87 + File.separatorChar + "1.1";
88 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
89
90 name = DependencyUtil.getFormattedOutputDirectory(false, true, false, false, false, false, folder, artifact);
91 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars";
92 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
93
94 name = DependencyUtil.getFormattedOutputDirectory(true, false, false, false, false, false, folder, artifact);
95 expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile";
96 assertEquals(expectedResult, name.getAbsolutePath());
97 assertTrue(expectedResult.equalsIgnoreCase(name.getAbsolutePath()));
98
99 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, artifact);
100 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources-jar";
101 assertEquals(expectedResult, name.getAbsolutePath());
102
103 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, artifact);
104 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-jar";
105 assertEquals(expectedResult, name.getAbsolutePath());
106
107 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, artifact);
108 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources";
109 assertEquals(expectedResult, name.getAbsolutePath());
110
111 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, artifact);
112 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources";
113 assertEquals(expectedResult, name.getAbsolutePath());
114
115 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, false, folder, artifact);
116 expectedResult =
117 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources-jar";
118 assertEquals(expectedResult, name.getAbsolutePath());
119
120 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, false, folder, artifact);
121 expectedResult =
122 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources-jar";
123 assertEquals(expectedResult, name.getAbsolutePath());
124
125 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, true, folder, artifact);
126 expectedResult =
127 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources";
128 assertEquals(expectedResult, name.getAbsolutePath());
129
130 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, true, folder, artifact);
131 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources";
132 assertEquals(expectedResult, name.getAbsolutePath());
133
134 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, true, false, folder, artifact);
135 expectedResult =
136 folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources-jar";
137 assertEquals(expectedResult, name.getAbsolutePath());
138
139 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, false, true, folder, artifact);
140 expectedResult =
141 folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-1.1-sources";
142 assertEquals(expectedResult, name.getAbsolutePath());
143
144 name = DependencyUtil.getFormattedOutputDirectory(true, false, true, false, true, true, folder, artifact);
145 expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources";
146 assertEquals(expectedResult, name.getAbsolutePath());
147 }
148
149 @Test
150 void directoryName2() {
151 File folder = new File("target/a");
152 final Artifact artifact = snap;
153 File name =
154 DependencyUtil.getFormattedOutputDirectory(false, false, false, false, false, false, folder, artifact);
155
156 assertEquals(folder, name);
157
158 name = DependencyUtil.getFormattedOutputDirectory(false, true, false, false, false, false, folder, artifact);
159 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars";
160 assertEquals(expectedResult, name.getAbsolutePath());
161
162 name = DependencyUtil.getFormattedOutputDirectory(false, false, false, true, false, false, folder, artifact);
163 expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "two"
164 + File.separatorChar + "1.1-SNAPSHOT";
165 assertEquals(expectedResult, name.getAbsolutePath());
166
167 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, artifact);
168 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-war";
169 assertEquals(expectedResult, name.getAbsolutePath());
170
171 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, false, folder, artifact);
172 expectedResult =
173 folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT-war";
174 assertEquals(expectedResult, name.getAbsolutePath());
175
176 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, artifact);
177 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-war";
178 assertEquals(expectedResult, name.getAbsolutePath());
179
180 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, artifact);
181 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT";
182 assertEquals(expectedResult, name.getAbsolutePath());
183
184 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, artifact);
185 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two";
186 assertEquals(expectedResult, name.getAbsolutePath());
187
188 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, false, folder, artifact);
189 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-war";
190 assertEquals(expectedResult, name.getAbsolutePath());
191
192 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, false, true, folder, artifact);
193 expectedResult =
194 folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT";
195 assertEquals(expectedResult, name.getAbsolutePath());
196
197 name = DependencyUtil.getFormattedOutputDirectory(false, true, true, false, true, true, folder, artifact);
198 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two";
199 assertEquals(expectedResult, name.getAbsolutePath());
200 }
201
202 @Test
203 void directoryNameSources() {
204 File folder = new File("target/a");
205 File name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, false, folder, sources);
206 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
207 assertEquals(expectedResult, name.getAbsolutePath());
208
209 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, true, true, folder, sources);
210 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
211 assertEquals(expectedResult, name.getAbsolutePath());
212
213 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, false, folder, sources);
214 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources";
215 assertEquals(expectedResult, name.getAbsolutePath());
216
217 name = DependencyUtil.getFormattedOutputDirectory(false, false, true, false, false, true, folder, sources);
218 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources";
219 assertEquals(expectedResult, name.getAbsolutePath());
220 }
221
222 @Test
223 void fileName() {
224 Artifact artifact = release;
225
226 String name = DependencyUtil.getFormattedFileName(artifact, false);
227 String expectedResult = "one-1.1-sources.jar";
228 assertEquals(expectedResult, name);
229 name = DependencyUtil.getFormattedFileName(artifact, true);
230 expectedResult = "one-sources.jar";
231 assertEquals(expectedResult, name);
232 }
233
234 @Test
235 void fileNameUseBaseVersion() {
236 Artifact artifact = snapResolvedVersion;
237
238 String name = DependencyUtil.getFormattedFileName(artifact, false, false, true);
239 String expectedResult = "three-1.1-SNAPSHOT.war";
240 assertEquals(expectedResult, name);
241 name = DependencyUtil.getFormattedFileName(artifact, false, false, false);
242 expectedResult = "three-1.1-20121003.035531-117.war";
243 assertEquals(expectedResult, name);
244 }
245
246 @Test
247 void testJar() {
248 ArtifactHandler ah = new DefaultArtifactHandlerStub("test-jar", null);
249 VersionRange vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
250 Artifact artifact =
251 new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "test-jar", null, ah, false);
252
253 String name = DependencyUtil.getFormattedFileName(artifact, false);
254 String expectedResult = "two-1.1-SNAPSHOT.jar";
255 assertEquals(expectedResult, name);
256 }
257
258 @Test
259 void fileNameClassifier() {
260 ArtifactHandler ah = new DefaultArtifactHandlerStub("jar", "sources");
261 VersionRange vr = VersionRange.createFromVersion("1.1-SNAPSHOT");
262 Artifact artifact =
263 new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "jar", "sources", ah, false);
264
265 String name = DependencyUtil.getFormattedFileName(artifact, false);
266 String expectedResult = "two-1.1-SNAPSHOT-sources.jar";
267 assertEquals(expectedResult, name);
268
269 name = DependencyUtil.getFormattedFileName(artifact, true);
270 expectedResult = "two-sources.jar";
271 assertEquals(expectedResult, name);
272
273 name = DependencyUtil.getFormattedFileName(artifact, false, false, false, true);
274 expectedResult = "two-1.1-SNAPSHOT.jar";
275 assertEquals(expectedResult, name);
276
277 ah = new DefaultArtifactHandlerStub("war", null);
278 artifact = new DefaultArtifact("test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false);
279 name = DependencyUtil.getFormattedFileName(artifact, true);
280 expectedResult = "two.war";
281 assertEquals(expectedResult, name);
282 }
283
284 @Test
285 void fileNameClassifierWithFile() {
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 @Test
323 void outputFileShouldBeOverridden() throws Exception {
324 File file = new File(temDir, "file1.out");
325 assertThat(file).doesNotExist();
326
327 DependencyUtil.write(TEST_CONTENT, file, false, "UTF-8");
328 assertThat(file).hasContent(TEST_CONTENT);
329
330 DependencyUtil.write(TEST_CONTENT, file, false, "UTF-8");
331 assertThat(file).hasContent(TEST_CONTENT);
332 }
333
334 @Test
335 void outputFileShouldBeAppended() throws Exception {
336 File file = new File(temDir, "file2.out");
337 assertThat(file).doesNotExist();
338
339 DependencyUtil.write(TEST_CONTENT, file, true, "UTF-8");
340 assertThat(file).hasContent(TEST_CONTENT);
341
342 DependencyUtil.write(TEST_CONTENT, file, true, "UTF-8");
343 assertThat(file).hasContent(TEST_CONTENT + TEST_CONTENT);
344 }
345 }