1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.index.artifact;
20
21 import java.text.ParseException;
22 import java.text.SimpleDateFormat;
23
24 import org.junit.Test;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.assertNull;
30 import static org.junit.Assert.assertTrue;
31
32 public class M2GavCalculatorTest {
33 private M2GavCalculator gavCalculator = new M2GavCalculator();
34
35 private SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd.HHmmss");
36
37 protected Long parseTimestamp(String timeStamp) throws ParseException {
38 if (timeStamp == null) {
39 return null;
40 } else {
41 return formatter.parse(timeStamp).getTime();
42 }
43 }
44
45 @Test
46 public void testGav() throws Exception {
47 Gav gav;
48 String path;
49
50 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-25-javadoc.jar");
51
52 assertEquals("org.jruby", gav.getGroupId());
53 assertEquals("jruby", gav.getArtifactId());
54 assertEquals("1.0RC1-20070504.160758-25", gav.getVersion());
55 assertEquals("1.0RC1-SNAPSHOT", gav.getBaseVersion());
56 assertEquals("javadoc", gav.getClassifier());
57 assertEquals("jar", gav.getExtension());
58 assertEquals(Integer.valueOf(25), gav.getSnapshotBuildNumber());
59 assertEquals(parseTimestamp("20070504.160758"), gav.getSnapshotTimeStamp());
60 assertEquals("jruby-1.0RC1-20070504.160758-25-javadoc.jar", gav.getName());
61 assertEquals(true, gav.isSnapshot());
62 assertEquals(false, gav.isHash());
63 assertEquals(null, gav.getHashType());
64
65 path = gavCalculator.gavToPath(gav);
66 assertEquals("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-25-javadoc.jar", path);
67
68 gav = gavCalculator.pathToGav(
69 "/com/sun/xml/ws/jaxws-local-transport/2.1.3/jaxws-local-transport-2.1.3.pom.md5");
70
71 assertEquals("com.sun.xml.ws", gav.getGroupId());
72 assertEquals("jaxws-local-transport", gav.getArtifactId());
73 assertEquals("2.1.3", gav.getVersion());
74 assertEquals("2.1.3", gav.getBaseVersion());
75 assertEquals(null, gav.getClassifier());
76 assertEquals("pom", gav.getExtension());
77 assertEquals(null, gav.getSnapshotBuildNumber());
78 assertEquals(null, gav.getSnapshotTimeStamp());
79 assertEquals("jaxws-local-transport-2.1.3.pom.md5", gav.getName());
80 assertEquals(false, gav.isSnapshot());
81 assertEquals(true, gav.isHash());
82 assertEquals(Gav.HashType.md5, gav.getHashType());
83
84 path = gavCalculator.gavToPath(gav);
85 assertEquals("/com/sun/xml/ws/jaxws-local-transport/2.1.3/jaxws-local-transport-2.1.3.pom.md5", path);
86
87 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar");
88
89 assertEquals("org.jruby", gav.getGroupId());
90 assertEquals("jruby", gav.getArtifactId());
91 assertEquals("1.0RC1-20070504.160758-2", gav.getVersion());
92 assertEquals("1.0RC1-SNAPSHOT", gav.getBaseVersion());
93 assertEquals(null, gav.getClassifier());
94 assertEquals("jar", gav.getExtension());
95 assertEquals(Integer.valueOf(2), gav.getSnapshotBuildNumber());
96 assertEquals(parseTimestamp("20070504.160758"), gav.getSnapshotTimeStamp());
97 assertEquals("jruby-1.0RC1-20070504.160758-2.jar", gav.getName());
98 assertEquals(true, gav.isSnapshot());
99 assertEquals(false, gav.isHash());
100 assertEquals(null, gav.getHashType());
101
102 path = gavCalculator.gavToPath(gav);
103 assertEquals("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar", path);
104
105 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar.md5");
106
107 assertEquals("org.jruby", gav.getGroupId());
108 assertEquals("jruby", gav.getArtifactId());
109 assertEquals("1.0RC1-20070504.160758-2", gav.getVersion());
110 assertEquals("1.0RC1-SNAPSHOT", gav.getBaseVersion());
111 assertEquals(null, gav.getClassifier());
112 assertEquals("jar", gav.getExtension());
113 assertEquals(Integer.valueOf(2), gav.getSnapshotBuildNumber());
114 assertEquals(parseTimestamp("20070504.160758"), gav.getSnapshotTimeStamp());
115 assertEquals("jruby-1.0RC1-20070504.160758-2.jar.md5", gav.getName());
116 assertEquals(true, gav.isSnapshot());
117 assertEquals(true, gav.isHash());
118 assertEquals(Gav.HashType.md5, gav.getHashType());
119
120 path = gavCalculator.gavToPath(gav);
121 assertEquals("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar.md5", path);
122
123 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar");
124
125 assertEquals("org.jruby", gav.getGroupId());
126 assertEquals("jruby", gav.getArtifactId());
127 assertEquals("1.0RC1-20070504.160758-2", gav.getVersion());
128 assertEquals("1.0RC1-SNAPSHOT", gav.getBaseVersion());
129 assertEquals(null, gav.getClassifier());
130 assertEquals("jar", gav.getExtension());
131 assertEquals(Integer.valueOf(2), gav.getSnapshotBuildNumber());
132 assertEquals(parseTimestamp("20070504.160758"), gav.getSnapshotTimeStamp());
133 assertEquals("jruby-1.0RC1-20070504.160758-2.jar", gav.getName());
134 assertEquals(true, gav.isSnapshot());
135 assertEquals(false, gav.isHash());
136 assertEquals(null, gav.getHashType());
137
138 path = gavCalculator.gavToPath(gav);
139 assertEquals("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2.jar", path);
140
141 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2-sources.jar");
142
143 assertEquals("org.jruby", gav.getGroupId());
144 assertEquals("jruby", gav.getArtifactId());
145 assertEquals("1.0RC1-20070504.160758-2", gav.getVersion());
146 assertEquals("1.0RC1-SNAPSHOT", gav.getBaseVersion());
147 assertEquals("sources", gav.getClassifier());
148 assertEquals("jar", gav.getExtension());
149 assertEquals(Integer.valueOf(2), gav.getSnapshotBuildNumber());
150 assertEquals(parseTimestamp("20070504.160758"), gav.getSnapshotTimeStamp());
151 assertEquals("jruby-1.0RC1-20070504.160758-2-sources.jar", gav.getName());
152 assertEquals(true, gav.isSnapshot());
153 assertEquals(false, gav.isHash());
154 assertEquals(null, gav.getHashType());
155
156 path = gavCalculator.gavToPath(gav);
157 assertEquals("/org/jruby/jruby/1.0RC1-SNAPSHOT/jruby-1.0RC1-20070504.160758-2-sources.jar", path);
158
159 gav = gavCalculator.pathToGav(
160 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT.jar.sha1");
161
162 assertEquals("com.stchome.products.dsms.services", gav.getGroupId());
163 assertEquals("dsms-intervention-service", gav.getArtifactId());
164 assertEquals("2.4.2-64-SNAPSHOT", gav.getVersion());
165 assertEquals("2.4.2-64-SNAPSHOT", gav.getBaseVersion());
166 assertEquals(null, gav.getClassifier());
167 assertEquals("jar", gav.getExtension());
168 assertEquals(null, gav.getSnapshotBuildNumber());
169 assertEquals(null, gav.getSnapshotTimeStamp());
170 assertEquals("dsms-intervention-service-2.4.2-64-SNAPSHOT.jar.sha1", gav.getName());
171 assertEquals(true, gav.isSnapshot());
172 assertEquals(true, gav.isHash());
173 assertEquals(Gav.HashType.sha1, gav.getHashType());
174
175 path = gavCalculator.gavToPath(gav);
176 assertEquals(
177 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT.jar.sha1",
178 path);
179
180 gav = gavCalculator.pathToGav(
181 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT-javadoc.jar.sha1");
182
183 assertEquals("com.stchome.products.dsms.services", gav.getGroupId());
184 assertEquals("dsms-intervention-service", gav.getArtifactId());
185 assertEquals("2.4.2-64-SNAPSHOT", gav.getVersion());
186 assertEquals("2.4.2-64-SNAPSHOT", gav.getBaseVersion());
187 assertEquals("javadoc", gav.getClassifier());
188 assertEquals("jar", gav.getExtension());
189 assertEquals(null, gav.getSnapshotBuildNumber());
190 assertEquals(null, gav.getSnapshotTimeStamp());
191 assertEquals("dsms-intervention-service-2.4.2-64-SNAPSHOT-javadoc.jar.sha1", gav.getName());
192 assertEquals(true, gav.isSnapshot());
193 assertEquals(true, gav.isHash());
194 assertEquals(Gav.HashType.sha1, gav.getHashType());
195
196 path = gavCalculator.gavToPath(gav);
197 assertEquals(
198 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT-javadoc.jar.sha1",
199 path);
200
201 gav = gavCalculator.pathToGav(
202 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT.jar");
203
204 assertEquals("com.stchome.products.dsms.services", gav.getGroupId());
205 assertEquals("dsms-intervention-service", gav.getArtifactId());
206 assertEquals("2.4.2-64-SNAPSHOT", gav.getVersion());
207 assertEquals("2.4.2-64-SNAPSHOT", gav.getBaseVersion());
208 assertEquals(null, gav.getClassifier());
209 assertEquals("jar", gav.getExtension());
210 assertEquals(null, gav.getSnapshotBuildNumber());
211 assertEquals(null, gav.getSnapshotTimeStamp());
212 assertEquals("dsms-intervention-service-2.4.2-64-SNAPSHOT.jar", gav.getName());
213 assertEquals(true, gav.isSnapshot());
214 assertEquals(false, gav.isHash());
215 assertEquals(null, gav.getHashType());
216
217 path = gavCalculator.gavToPath(gav);
218 assertEquals(
219 "/com/stchome/products/dsms/services/dsms-intervention-service/2.4.2-64-SNAPSHOT/dsms-intervention-service-2.4.2-64-SNAPSHOT.jar",
220 path);
221
222 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar");
223
224 assertEquals("org.jruby", gav.getGroupId());
225 assertEquals("jruby", gav.getArtifactId());
226 assertEquals("1.0", gav.getVersion());
227 assertEquals("1.0", gav.getBaseVersion());
228 assertEquals("javadoc", gav.getClassifier());
229 assertEquals("jar", gav.getExtension());
230 assertEquals(null, gav.getSnapshotBuildNumber());
231 assertEquals(null, gav.getSnapshotTimeStamp());
232 assertEquals("jruby-1.0-javadoc.jar", gav.getName());
233 assertEquals(false, gav.isSnapshot());
234 assertEquals(false, gav.isHash());
235 assertEquals(null, gav.getHashType());
236
237 path = gavCalculator.gavToPath(gav);
238 assertEquals("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar", path);
239
240 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha1");
241
242 assertEquals("org.jruby", gav.getGroupId());
243 assertEquals("jruby", gav.getArtifactId());
244 assertEquals("1.0", gav.getVersion());
245 assertEquals("1.0", gav.getBaseVersion());
246 assertEquals("javadoc", gav.getClassifier());
247 assertEquals("jar", gav.getExtension());
248 assertEquals(null, gav.getSnapshotBuildNumber());
249 assertEquals(null, gav.getSnapshotTimeStamp());
250 assertEquals("jruby-1.0-javadoc.jar.sha1", gav.getName());
251 assertEquals(false, gav.isSnapshot());
252 assertEquals(true, gav.isHash());
253 assertEquals(Gav.HashType.sha1, gav.getHashType());
254
255 path = gavCalculator.gavToPath(gav);
256 assertEquals("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha1", path);
257
258 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/jruby-1.0.jar");
259
260 assertEquals("org.jruby", gav.getGroupId());
261 assertEquals("jruby", gav.getArtifactId());
262 assertEquals("1.0", gav.getVersion());
263 assertEquals("1.0", gav.getBaseVersion());
264 assertEquals(null, gav.getClassifier());
265 assertEquals("jar", gav.getExtension());
266 assertEquals(null, gav.getSnapshotBuildNumber());
267 assertEquals(null, gav.getSnapshotTimeStamp());
268 assertEquals("jruby-1.0.jar", gav.getName());
269 assertEquals(false, gav.isSnapshot());
270 assertEquals(false, gav.isHash());
271 assertEquals(null, gav.getHashType());
272
273 path = gavCalculator.gavToPath(gav);
274 assertEquals("/org/jruby/jruby/1.0/jruby-1.0.jar", path);
275
276 gav = gavCalculator.pathToGav("/activemq/activemq-core/1.2/activemq-core-1.2.pom");
277
278 assertEquals("activemq", gav.getGroupId());
279 assertEquals("activemq-core", gav.getArtifactId());
280 assertEquals("1.2", gav.getVersion());
281 assertEquals("1.2", gav.getBaseVersion());
282 assertEquals(null, gav.getClassifier());
283 assertEquals("pom", gav.getExtension());
284 assertEquals(null, gav.getSnapshotBuildNumber());
285 assertEquals(null, gav.getSnapshotTimeStamp());
286 assertEquals("activemq-core-1.2.pom", gav.getName());
287 assertEquals(false, gav.isSnapshot());
288 assertEquals(false, gav.isHash());
289 assertEquals(null, gav.getHashType());
290
291 path = gavCalculator.gavToPath(gav);
292 assertEquals("/activemq/activemq-core/1.2/activemq-core-1.2.pom", path);
293
294 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/maven-metadata.xml");
295 assertEquals(null, gav);
296
297 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0-SNAPSHOT/maven-metadata.xml");
298 assertEquals(null, gav);
299
300 gav = gavCalculator.pathToGav("/junit/junit/3.8/junit-3.8.jar");
301 assertEquals("junit", gav.getGroupId());
302 assertEquals("junit", gav.getArtifactId());
303 assertEquals("3.8", gav.getVersion());
304 assertEquals("3.8", gav.getBaseVersion());
305 assertEquals(null, gav.getClassifier());
306 assertEquals("jar", gav.getExtension());
307 assertEquals(null, gav.getSnapshotBuildNumber());
308 assertEquals(null, gav.getSnapshotTimeStamp());
309 assertEquals("junit-3.8.jar", gav.getName());
310 assertEquals(false, gav.isSnapshot());
311 assertEquals(false, gav.isHash());
312 assertEquals(null, gav.getHashType());
313
314 gav = gavCalculator.pathToGav("/foo1/foo1/0.0.1-SNAPSHOT/foo1-0.0.1-SNAPSHOT.pom");
315 assertEquals("foo1", gav.getGroupId());
316 assertEquals("foo1", gav.getArtifactId());
317 assertEquals("0.0.1-SNAPSHOT", gav.getVersion());
318 assertEquals("0.0.1-SNAPSHOT", gav.getBaseVersion());
319 assertEquals(null, gav.getClassifier());
320 assertEquals("pom", gav.getExtension());
321 assertEquals(null, gav.getSnapshotBuildNumber());
322 assertEquals(null, gav.getSnapshotTimeStamp());
323 assertEquals("foo1-0.0.1-SNAPSHOT.pom", gav.getName());
324 assertEquals(true, gav.isSnapshot());
325 assertEquals(false, gav.isHash());
326 assertEquals(null, gav.getHashType());
327
328 path = gavCalculator.gavToPath(gav);
329 assertEquals("/foo1/foo1/0.0.1-SNAPSHOT/foo1-0.0.1-SNAPSHOT.pom", path);
330
331
332 gav = gavCalculator.pathToGav("/foo1/foo1/0.0.1SNAPSHOT/foo1-0.0.1SNAPSHOT.pom");
333 assertEquals("foo1", gav.getGroupId());
334 assertEquals("foo1", gav.getArtifactId());
335 assertEquals("0.0.1SNAPSHOT", gav.getVersion());
336 assertEquals("0.0.1SNAPSHOT", gav.getBaseVersion());
337 assertEquals(null, gav.getClassifier());
338 assertEquals("pom", gav.getExtension());
339 assertEquals(null, gav.getSnapshotBuildNumber());
340 assertEquals(null, gav.getSnapshotTimeStamp());
341 assertEquals("foo1-0.0.1SNAPSHOT.pom", gav.getName());
342 assertEquals(true, gav.isSnapshot());
343 assertEquals(false, gav.isHash());
344 assertEquals(null, gav.getHashType());
345
346 path = gavCalculator.gavToPath(gav);
347 assertEquals("/foo1/foo1/0.0.1SNAPSHOT/foo1-0.0.1SNAPSHOT.pom", path);
348
349 gav = gavCalculator.pathToGav("/foo1/foo1/0.0.1.SNAPSHOT/foo1-0.0.1.SNAPSHOT.pom");
350 assertEquals("foo1", gav.getGroupId());
351 assertEquals("foo1", gav.getArtifactId());
352 assertEquals("0.0.1.SNAPSHOT", gav.getVersion());
353 assertEquals("0.0.1.SNAPSHOT", gav.getBaseVersion());
354 assertEquals(null, gav.getClassifier());
355 assertEquals("pom", gav.getExtension());
356 assertEquals(null, gav.getSnapshotBuildNumber());
357 assertEquals(null, gav.getSnapshotTimeStamp());
358 assertEquals("foo1-0.0.1.SNAPSHOT.pom", gav.getName());
359 assertEquals(true, gav.isSnapshot());
360 assertEquals(false, gav.isHash());
361 assertEquals(null, gav.getHashType());
362
363 path = gavCalculator.gavToPath(gav);
364 assertEquals("/foo1/foo1/0.0.1.SNAPSHOT/foo1-0.0.1.SNAPSHOT.pom", path);
365
366
367
368 gav = gavCalculator.pathToGav("/foo1/foo1/0.0.1-SNAPSHOT/foo1-0.0.1-SNAPSHOT-jdk14.jar");
369 assertEquals("foo1", gav.getGroupId());
370 assertEquals("foo1", gav.getArtifactId());
371 assertEquals("0.0.1-SNAPSHOT", gav.getVersion());
372 assertEquals("0.0.1-SNAPSHOT", gav.getBaseVersion());
373 assertEquals("jdk14", gav.getClassifier());
374 assertEquals("jar", gav.getExtension());
375 assertEquals(null, gav.getSnapshotBuildNumber());
376 assertEquals(null, gav.getSnapshotTimeStamp());
377 assertEquals("foo1-0.0.1-SNAPSHOT-jdk14.jar", gav.getName());
378 assertEquals(true, gav.isSnapshot());
379 assertEquals(false, gav.isHash());
380 assertEquals(null, gav.getHashType());
381
382 path = gavCalculator.gavToPath(gav);
383 assertEquals("/foo1/foo1/0.0.1-SNAPSHOT/foo1-0.0.1-SNAPSHOT-jdk14.jar", path);
384
385 gav = gavCalculator.pathToGav("/foo1/foo1/1.0.0-beta-4-SNAPSHOT/foo1-1.0.0-beta-4-20080623.175436-1.jar");
386 assertEquals("foo1", gav.getGroupId());
387 assertEquals("foo1", gav.getArtifactId());
388 assertEquals("1.0.0-beta-4-20080623.175436-1", gav.getVersion());
389 assertEquals("1.0.0-beta-4-SNAPSHOT", gav.getBaseVersion());
390 assertEquals(null, gav.getClassifier());
391 assertEquals("jar", gav.getExtension());
392 assertEquals(Integer.valueOf(1), gav.getSnapshotBuildNumber());
393 assertEquals(parseTimestamp("20080623.175436"), gav.getSnapshotTimeStamp());
394 assertEquals("foo1-1.0.0-beta-4-20080623.175436-1.jar", gav.getName());
395 assertEquals(true, gav.isSnapshot());
396 assertEquals(false, gav.isHash());
397 assertEquals(null, gav.getHashType());
398
399 path = gavCalculator.gavToPath(gav);
400 assertEquals("/foo1/foo1/1.0.0-beta-4-SNAPSHOT/foo1-1.0.0-beta-4-20080623.175436-1.jar", path);
401
402 gav = gavCalculator.pathToGav(
403 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-4-SNAPSHOT/nexus-webapp-1.0.0-beta-4-20080623.203653-349.pom");
404 assertEquals("org.sonatype.nexus", gav.getGroupId());
405 assertEquals("nexus-webapp", gav.getArtifactId());
406 assertEquals("1.0.0-beta-4-20080623.203653-349", gav.getVersion());
407 assertEquals("1.0.0-beta-4-SNAPSHOT", gav.getBaseVersion());
408 assertEquals(null, gav.getClassifier());
409 assertEquals("pom", gav.getExtension());
410 assertEquals(Integer.valueOf(349), gav.getSnapshotBuildNumber());
411 assertEquals(parseTimestamp("20080623.203653"), gav.getSnapshotTimeStamp());
412 assertEquals("nexus-webapp-1.0.0-beta-4-20080623.203653-349.pom", gav.getName());
413 assertEquals(true, gav.isSnapshot());
414 assertEquals(false, gav.isHash());
415 assertEquals(null, gav.getHashType());
416
417 path = gavCalculator.gavToPath(gav);
418 assertEquals(
419 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-4-SNAPSHOT/nexus-webapp-1.0.0-beta-4-20080623.203653-349.pom",
420 path);
421
422 gav = gavCalculator.pathToGav(
423 "/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-20080411.005221-75.pom.asc");
424 assertEquals("org.apache.maven.artifact", gav.getGroupId());
425 assertEquals("maven-artifact", gav.getArtifactId());
426 assertEquals("3.0-20080411.005221-75", gav.getVersion());
427 assertEquals("3.0-SNAPSHOT", gav.getBaseVersion());
428 assertEquals(null, gav.getClassifier());
429 assertEquals("pom", gav.getExtension());
430 assertEquals(Integer.valueOf(75), gav.getSnapshotBuildNumber());
431 assertEquals(parseTimestamp("20080411.005221"), gav.getSnapshotTimeStamp());
432 assertEquals("maven-artifact-3.0-20080411.005221-75.pom.asc", gav.getName());
433 assertEquals(true, gav.isSnapshot());
434 assertEquals(false, gav.isHash());
435 assertEquals(null, gav.getHashType());
436 assertEquals(true, gav.isSignature());
437 assertEquals(Gav.SignatureType.gpg, gav.getSignatureType());
438
439 path = gavCalculator.gavToPath(gav);
440 assertEquals(
441 "/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-20080411.005221-75.pom.asc",
442 path);
443
444 gav = gavCalculator.pathToGav(
445 "/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-20080411.005221-75.pom.asc.sha1");
446 assertEquals("org.apache.maven.artifact", gav.getGroupId());
447 assertEquals("maven-artifact", gav.getArtifactId());
448 assertEquals("3.0-20080411.005221-75", gav.getVersion());
449 assertEquals("3.0-SNAPSHOT", gav.getBaseVersion());
450 assertEquals(null, gav.getClassifier());
451 assertEquals("pom", gav.getExtension());
452 assertEquals(Integer.valueOf(75), gav.getSnapshotBuildNumber());
453 assertEquals(parseTimestamp("20080411.005221"), gav.getSnapshotTimeStamp());
454 assertEquals("maven-artifact-3.0-20080411.005221-75.pom.asc.sha1", gav.getName());
455 assertEquals(true, gav.isSnapshot());
456 assertEquals(true, gav.isHash());
457 assertEquals(Gav.HashType.sha1, gav.getHashType());
458 assertEquals(true, gav.isSignature());
459 assertEquals(Gav.SignatureType.gpg, gav.getSignatureType());
460
461 path = gavCalculator.gavToPath(gav);
462 assertEquals(
463 "/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-20080411.005221-75.pom.asc.sha1",
464 path);
465
466 gav = gavCalculator.pathToGav(
467 "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080302.032223-6-bin.zip.sha1");
468 assertEquals("org.apache.maven", gav.getGroupId());
469 assertEquals("maven-core", gav.getArtifactId());
470 assertEquals("2.0.9-20080302.032223-6", gav.getVersion());
471 assertEquals("2.0.9-SNAPSHOT", gav.getBaseVersion());
472 assertEquals("bin", gav.getClassifier());
473 assertEquals("zip", gav.getExtension());
474 assertEquals(Integer.valueOf(6), gav.getSnapshotBuildNumber());
475 assertEquals(parseTimestamp("20080302.032223"), gav.getSnapshotTimeStamp());
476 assertEquals("maven-core-2.0.9-20080302.032223-6-bin.zip.sha1", gav.getName());
477 assertEquals(true, gav.isSnapshot());
478 assertEquals(true, gav.isHash());
479 assertEquals(Gav.HashType.sha1, gav.getHashType());
480 assertEquals(false, gav.isSignature());
481
482 path = gavCalculator.gavToPath(gav);
483 assertEquals(
484 "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080302.032223-6-bin.zip.sha1", path);
485
486 gav = gavCalculator.pathToGav(
487 "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080302.032223-6-bin.tar.gz");
488 assertEquals("org.apache.maven", gav.getGroupId());
489 assertEquals("maven-core", gav.getArtifactId());
490 assertEquals("2.0.9-20080302.032223-6", gav.getVersion());
491 assertEquals("2.0.9-SNAPSHOT", gav.getBaseVersion());
492 assertEquals("bin", gav.getClassifier());
493 assertEquals("tar.gz", gav.getExtension());
494 assertEquals(Integer.valueOf(6), gav.getSnapshotBuildNumber());
495 assertEquals(parseTimestamp("20080302.032223"), gav.getSnapshotTimeStamp());
496 assertEquals("maven-core-2.0.9-20080302.032223-6-bin.tar.gz", gav.getName());
497 assertEquals(true, gav.isSnapshot());
498 assertEquals(false, gav.isHash());
499 assertEquals(null, gav.getHashType());
500 assertEquals(false, gav.isSignature());
501
502 gav = gavCalculator.pathToGav("/org/sonatype/nexus/nexus-webapp/1.4.0/nexus-webapp-1.4.0-bundle.tar.gz");
503 assertEquals("org.sonatype.nexus", gav.getGroupId());
504 assertEquals("nexus-webapp", gav.getArtifactId());
505 assertEquals("1.4.0", gav.getVersion());
506 assertEquals("1.4.0", gav.getBaseVersion());
507 assertEquals("bundle", gav.getClassifier());
508 assertEquals("tar.gz", gav.getExtension());
509 assertEquals(null, gav.getSnapshotBuildNumber());
510 assertEquals(null, gav.getSnapshotTimeStamp());
511 assertEquals("nexus-webapp-1.4.0-bundle.tar.gz", gav.getName());
512 assertEquals(false, gav.isSnapshot());
513 assertEquals(false, gav.isHash());
514 assertEquals(null, gav.getHashType());
515 assertEquals(false, gav.isSignature());
516
517 path = gavCalculator.gavToPath(gav);
518 assertEquals("/org/sonatype/nexus/nexus-webapp/1.4.0/nexus-webapp-1.4.0-bundle.tar.gz", path);
519
520 gav = gavCalculator.pathToGav("/foo/artifact/SNAPSHOT/artifact-SNAPSHOT.jar");
521 assertEquals("foo", gav.getGroupId());
522 assertEquals("artifact", gav.getArtifactId());
523 assertEquals("SNAPSHOT", gav.getVersion());
524 assertEquals("SNAPSHOT", gav.getBaseVersion());
525 assertEquals(null, gav.getClassifier());
526 assertEquals("jar", gav.getExtension());
527 assertEquals(null, gav.getSnapshotBuildNumber());
528 assertEquals(null, gav.getSnapshotTimeStamp());
529 assertEquals("artifact-SNAPSHOT.jar", gav.getName());
530 assertEquals(true, gav.isSnapshot());
531 assertEquals(false, gav.isHash());
532 assertEquals(null, gav.getHashType());
533
534 path = gavCalculator.gavToPath(gav);
535 assertEquals("/foo/artifact/SNAPSHOT/artifact-SNAPSHOT.jar", path);
536
537 gav = gavCalculator.pathToGav("/foo/artifact/SNAPSHOT/artifact-20080623.175436-1.jar");
538 assertEquals("foo", gav.getGroupId());
539 assertEquals("artifact", gav.getArtifactId());
540 assertEquals("20080623.175436-1", gav.getVersion());
541 assertEquals("SNAPSHOT", gav.getBaseVersion());
542 assertEquals(null, gav.getClassifier());
543 assertEquals("jar", gav.getExtension());
544 assertEquals(Integer.valueOf(1), gav.getSnapshotBuildNumber());
545 assertEquals(parseTimestamp("20080623.175436"), gav.getSnapshotTimeStamp());
546 assertEquals("artifact-20080623.175436-1.jar", gav.getName());
547 assertEquals(true, gav.isSnapshot());
548 assertEquals(false, gav.isHash());
549 assertEquals(null, gav.getHashType());
550
551 path = gavCalculator.gavToPath(gav);
552 assertEquals("/foo/artifact/SNAPSHOT/artifact-20080623.175436-1.jar", path);
553
554 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha256");
555
556 assertEquals("org.jruby", gav.getGroupId());
557 assertEquals("jruby", gav.getArtifactId());
558 assertEquals("1.0", gav.getVersion());
559 assertEquals("1.0", gav.getBaseVersion());
560 assertEquals("javadoc", gav.getClassifier());
561 assertEquals("jar", gav.getExtension());
562 assertEquals(null, gav.getSnapshotBuildNumber());
563 assertEquals(null, gav.getSnapshotTimeStamp());
564 assertEquals("jruby-1.0-javadoc.jar.sha256", gav.getName());
565 assertEquals(false, gav.isSnapshot());
566 assertEquals(true, gav.isHash());
567 assertEquals(Gav.HashType.sha256, gav.getHashType());
568
569 path = gavCalculator.gavToPath(gav);
570 assertEquals("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha256", path);
571
572 gav = gavCalculator.pathToGav("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha512");
573 assertEquals("org.jruby", gav.getGroupId());
574 assertEquals("jruby", gav.getArtifactId());
575 assertEquals("1.0", gav.getVersion());
576 assertEquals("1.0", gav.getBaseVersion());
577 assertEquals("javadoc", gav.getClassifier());
578 assertEquals("jar", gav.getExtension());
579 assertEquals(null, gav.getSnapshotBuildNumber());
580 assertEquals(null, gav.getSnapshotTimeStamp());
581 assertEquals("jruby-1.0-javadoc.jar.sha512", gav.getName());
582 assertEquals(false, gav.isSnapshot());
583 assertEquals(true, gav.isHash());
584 assertEquals(Gav.HashType.sha512, gav.getHashType());
585
586 path = gavCalculator.gavToPath(gav);
587 assertEquals("/org/jruby/jruby/1.0/jruby-1.0-javadoc.jar.sha512", path);
588
589 gav = gavCalculator.pathToGav("/dev/mbien/hintmod/1.0-SNAPSHOT/hintmod-1.0-SNAPSHOT.pom");
590 assertEquals("dev.mbien", gav.getGroupId());
591 assertEquals("hintmod", gav.getArtifactId());
592 assertEquals("1.0-SNAPSHOT", gav.getVersion());
593 assertEquals("1.0-SNAPSHOT", gav.getBaseVersion());
594 assertEquals(null, gav.getClassifier());
595 assertEquals("pom", gav.getExtension());
596 assertEquals("hintmod-1.0-SNAPSHOT.pom", gav.getName());
597 assertEquals(true, gav.isSnapshot());
598 assertEquals(false, gav.isHash());
599 assertEquals(null, gav.getHashType());
600
601 path = gavCalculator.gavToPath(gav);
602 assertEquals("/dev/mbien/hintmod/1.0-SNAPSHOT/hintmod-1.0-SNAPSHOT.pom", path);
603
604 gav = gavCalculator.pathToGav(
605 "/dev/mbien/hintmod/1.0-SNAPSHOT/maven-metadata-local.xml");
606 assertNull(gav);
607 gav = gavCalculator.pathToGav("/dev/mbien/hintmod/maven-metadata-local.xml");
608 assertNull(gav);
609 gav = gavCalculator.pathToGav("/dev/mbien/hintmod/1.0-SNAPSHOT/_remote.repositories");
610 assertNull(gav);
611 gav = gavCalculator.pathToGav("/dev/mbien/hintmod/1.0-SNAPSHOT/_maven.repositories");
612 assertNull(gav);
613 }
614
615 @Test
616 public void testNegGav() throws Exception {
617 Gav gav;
618
619
620 gav = gavCalculator.pathToGav(
621 "/com/electrabel/connection-register-ear/1.2-SNAPSHOT/connection-register-ear-1.2-20101214.143755.ear");
622 assertNull("Should fail, since the filename lacks the -BBB build number, hence, is not valid snapshot", gav);
623
624 }
625
626 @Test
627 public void testGavExtreme() throws Exception {
628 Gav gav;
629
630 gav = gavCalculator.pathToGav("/");
631 assertEquals(null, gav);
632
633 gav = gavCalculator.pathToGav("/some/stupid/path");
634 assertEquals(null, gav);
635
636 gav = gavCalculator.pathToGav("/some/stupid/path/more/in/it");
637 assertEquals(null, gav);
638
639 gav = gavCalculator.pathToGav("/something/that/looks/");
640 assertEquals(null, gav);
641
642 gav = gavCalculator.pathToGav("/something/that/looks/like-an-artifact.blah");
643 assertEquals(null, gav);
644
645 gav = gavCalculator.pathToGav("/something/that/looks/like-an-artifact.pom");
646 assertEquals(null, gav);
647
648 gav = gavCalculator.pathToGav("org/apache/maven/scm/maven-scm");
649 assertEquals(null, gav);
650
651 gav = gavCalculator.pathToGav("org/apache/geronimo/javamail/geronimo-javamail_1.4_mail");
652 assertEquals(null, gav);
653
654
655 gav = gavCalculator.pathToGav("/something/that/looks/maven-metadata.xml");
656 assertEquals(null, gav);
657
658
659 gav = gavCalculator.pathToGav("/something/that/looks/like-SNAPSHOT/maven-metadata.xml");
660 assertEquals(null, gav);
661
662
663 gav = gavCalculator.pathToGav("/org/codehaus/plexus/plexus-container-default/maven-metadata.xml");
664 assertEquals(null, gav);
665 }
666
667 @Test
668 public void testIssueNexus57() throws Exception {
669
670 Gav gav = gavCalculator.pathToGav(
671 "/org/apache/maven/plugins/maven-dependency-plugin/2.0-SNAPSHOT/maven-dependency-plugin-2.0-alpha-1-20070109.165112-13.jar");
672
673 assertNull("We expect null since baseVersion and version mismatch in path!", gav);
674 }
675
676 @Test
677 public void testGavExtensionAndClassifier() throws Exception {
678 Gav gav;
679
680 gav = gavCalculator.pathToGav("/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5/nexus-webapp-1.0.0-beta-5.tar.gz");
681 assertNotNull(gav);
682 assertEquals("tar.gz", gav.getExtension());
683 assertEquals(null, gav.getClassifier());
684 assertEquals("1.0.0-beta-5", gav.getVersion());
685
686 gav = gavCalculator.pathToGav(
687 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5/nexus-webapp-1.0.0-beta-5-bundle.tar.gz");
688 assertNotNull(gav);
689 assertEquals("tar.gz", gav.getExtension());
690 assertEquals("bundle", gav.getClassifier());
691 assertEquals("1.0.0-beta-5", gav.getVersion());
692
693 gav = gavCalculator.pathToGav(
694 "/org/codehaus/tycho/tycho-distribution/0.3.0-SNAPSHOT/tycho-distribution-0.3.0-SNAPSHOT-bin.tar.gz");
695 assertNotNull(gav);
696 assertEquals("tar.gz", gav.getExtension());
697 assertEquals("bin", gav.getClassifier());
698 assertEquals("0.3.0-SNAPSHOT", gav.getVersion());
699
700 gav = gavCalculator.pathToGav(
701 "/org/codehaus/tycho/tycho-distribution/SNAPSHOT/tycho-distribution-SNAPSHOT-bin.tar.gz");
702 assertNotNull(gav);
703 assertEquals("tar.gz", gav.getExtension());
704 assertEquals("bin", gav.getClassifier());
705 assertEquals("SNAPSHOT", gav.getVersion());
706
707 gav = gavCalculator.pathToGav(
708 "/org/codehaus/tycho/tycho-distribution/0.3.0-SNAPSHOT/tycho-distribution-0.3.0-20080818.153246-33-bin.tar.gz");
709 assertNotNull(gav);
710 assertEquals("tar.gz", gav.getExtension());
711 assertEquals("bin", gav.getClassifier());
712 assertEquals("0.3.0-20080818.153246-33", gav.getVersion());
713
714 gav = gavCalculator.pathToGav(
715 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-4.2/nexus-webapp-1.0.0-beta-4.2-javadoc.jar");
716 assertNotNull(gav);
717 assertEquals("jar", gav.getExtension());
718 assertEquals("javadoc", gav.getClassifier());
719 assertEquals("1.0.0-beta-4.2", gav.getVersion());
720
721 gav = gavCalculator.pathToGav(
722 "/org/codehaus/tycho/tycho-distribution/0.3.0-SNAPSHOT/tycho-distribution-0.3.0-20080818.153246-33-bin.zip");
723 assertNotNull(gav);
724 assertEquals("zip", gav.getExtension());
725 assertEquals("bin", gav.getClassifier());
726 assertEquals("0.3.0-20080818.153246-33", gav.getVersion());
727
728 gav = gavCalculator.pathToGav(
729 "/org/sonatype/nexus/tools/nexus-migration-app/1.0.0-beta-6-SNAPSHOT/nexus-migration-app-1.0.0-beta-6-20080809.181715-2-cli.jar");
730 assertNotNull(gav);
731 assertEquals("jar", gav.getExtension());
732 assertEquals("cli", gav.getClassifier());
733 assertEquals("1.0.0-beta-6-20080809.181715-2", gav.getVersion());
734 }
735
736 @Test
737 public void testGavSnapshotVersion() throws Exception {
738 Gav gav;
739
740 gav = gavCalculator.pathToGav(
741 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5-SNAPSHOT/nexus-webapp-1.0.0-beta-5-SNAPSHOT.tar.gz");
742 assertNotNull(gav);
743 assertEquals("tar.gz", gav.getExtension());
744 assertEquals(null, gav.getClassifier());
745 assertEquals("1.0.0-beta-5-SNAPSHOT", gav.getVersion());
746 assertTrue(gav.isSnapshot());
747
748 gav = gavCalculator.pathToGav(
749 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5-SNAPSHOT-1234/nexus-webapp-1.0.0-beta-5-SNAPSHOT-1234.tar.gz");
750 assertNotNull(gav);
751 assertEquals("tar.gz", gav.getExtension());
752 assertEquals(null, gav.getClassifier());
753 assertEquals("1.0.0-beta-5-SNAPSHOT-1234", gav.getVersion());
754 assertFalse(gav.isSnapshot());
755
756 gav = gavCalculator.pathToGav(
757 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5-SNAPSHOT/nexus-webapp-1.0.0-beta-5-SNAPSHOT-bundle.tar.gz");
758 assertNotNull(gav);
759 assertEquals("tar.gz", gav.getExtension());
760 assertEquals("bundle", gav.getClassifier());
761 assertEquals("1.0.0-beta-5-SNAPSHOT", gav.getVersion());
762 assertTrue(gav.isSnapshot());
763
764 gav = gavCalculator.pathToGav(
765 "/org/sonatype/nexus/nexus-webapp/1.0.0-beta-5-SNAPSHOT-1234/nexus-webapp-1.0.0-beta-5-SNAPSHOT-1234-bundle.tar.gz");
766 assertNotNull(gav);
767 assertEquals("tar.gz", gav.getExtension());
768 assertEquals("bundle", gav.getClassifier());
769 assertEquals("1.0.0-beta-5-SNAPSHOT-1234", gav.getVersion());
770 assertFalse(gav.isSnapshot());
771 }
772
773 @Test
774 public void testGavLooseStrictedSnapshot() throws Exception {
775 Gav gav;
776
777 gav = gavCalculator.pathToGav("/org/sonatype/nexus-3148/1.0.SNAPSHOT/nexus-3148-1.0.20100111.064938-1.pom");
778 assertNotNull(gav);
779 assertEquals("pom", gav.getExtension());
780 assertEquals("1.0.20100111.064938-1", gav.getVersion());
781 assertEquals("1.0.SNAPSHOT", gav.getBaseVersion());
782 assertEquals("org.sonatype", gav.getGroupId());
783 assertEquals("nexus-3148", gav.getArtifactId());
784 assertEquals(null, gav.getClassifier());
785 assertEquals("pom", gav.getExtension());
786 assertEquals(Integer.valueOf(1), gav.getSnapshotBuildNumber());
787
788
789 assertEquals(parseTimestamp("20100111.064938"), gav.getSnapshotTimeStamp());
790 assertEquals("nexus-3148-1.0.20100111.064938-1.pom", gav.getName());
791 assertEquals(true, gav.isSnapshot());
792 assertEquals(false, gav.isHash());
793 assertEquals(null, gav.getHashType());
794
795 String path = gavCalculator.gavToPath(gav);
796 assertEquals("/org/sonatype/nexus-3148/1.0.SNAPSHOT/nexus-3148-1.0.20100111.064938-1.pom", path);
797 }
798 }