1 package org.apache.maven.index.artifact;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.text.ParseException;
23 import java.text.SimpleDateFormat;
24
25 import org.junit.Test;
26
27 import static org.junit.Assert.assertEquals;
28
29 public class M1GavCalculatorTest
30 {
31 private M1GavCalculator gavCalculator = new M1GavCalculator();
32
33 private SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
34
35
36 protected Long parseTimestamp( String timeStamp )
37 throws ParseException
38 {
39 if ( timeStamp == null )
40 {
41 return null;
42 }
43 else
44 {
45 return formatter.parse( timeStamp ).getTime();
46 }
47 }
48
49 @Test
50 public void testGav()
51 throws Exception
52 {
53 Gav gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar" );
54
55 assertEquals( "org.jruby", gav.getGroupId() );
56 assertEquals( "jruby", gav.getArtifactId() );
57 assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
58 assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
59 assertEquals( "javadoc", gav.getClassifier() );
60 assertEquals( "jar", gav.getExtension() );
61 assertEquals( null, gav.getSnapshotBuildNumber() );
62 assertEquals( null, gav.getSnapshotTimeStamp() );
63 assertEquals( "jruby-1.0RC1-SNAPSHOT-javadoc.jar", gav.getName() );
64 assertEquals( true, gav.isSnapshot() );
65 assertEquals( false, gav.isHash() );
66 assertEquals( null, gav.getHashType() );
67
68 String path = gavCalculator.gavToPath( gav );
69 assertEquals( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar", path );
70
71 gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar" );
72
73 assertEquals( "org.jruby", gav.getGroupId() );
74 assertEquals( "jruby", gav.getArtifactId() );
75 assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
76 assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
77 assertEquals( null, gav.getClassifier() );
78 assertEquals( "jar", gav.getExtension() );
79 assertEquals( null, gav.getSnapshotBuildNumber() );
80 assertEquals( null, gav.getSnapshotTimeStamp() );
81 assertEquals( "jruby-1.0RC1-SNAPSHOT.jar", gav.getName() );
82 assertEquals( true, gav.isSnapshot() );
83 assertEquals( false, gav.isHash() );
84 assertEquals( null, gav.getHashType() );
85
86 path = gavCalculator.gavToPath( gav );
87 assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar", path );
88
89 gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5" );
90
91 assertEquals( "org.jruby", gav.getGroupId() );
92 assertEquals( "jruby", gav.getArtifactId() );
93 assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
94 assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
95 assertEquals( null, gav.getClassifier() );
96 assertEquals( "jar", gav.getExtension() );
97 assertEquals( null, gav.getSnapshotBuildNumber() );
98 assertEquals( null, gav.getSnapshotTimeStamp() );
99 assertEquals( "jruby-1.0RC1-SNAPSHOT.jar.md5", gav.getName() );
100 assertEquals( true, gav.isSnapshot() );
101 assertEquals( true, gav.isHash() );
102 assertEquals( Gav.HashType.md5, gav.getHashType() );
103
104 path = gavCalculator.gavToPath( gav );
105 assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5", path );
106
107 gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar" );
108
109 assertEquals( "org.jruby", gav.getGroupId() );
110 assertEquals( "jruby", gav.getArtifactId() );
111 assertEquals( "1.0", gav.getVersion() );
112 assertEquals( "1.0", gav.getBaseVersion() );
113 assertEquals( "javadoc", gav.getClassifier() );
114 assertEquals( "jar", gav.getExtension() );
115 assertEquals( null, gav.getSnapshotBuildNumber() );
116 assertEquals( null, gav.getSnapshotTimeStamp() );
117 assertEquals( "jruby-1.0-javadoc.jar", gav.getName() );
118 assertEquals( false, gav.isSnapshot() );
119 assertEquals( false, gav.isHash() );
120 assertEquals( null, gav.getHashType() );
121
122 path = gavCalculator.gavToPath( gav );
123 assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar", path );
124
125 gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1" );
126
127 assertEquals( "org.jruby", gav.getGroupId() );
128 assertEquals( "jruby", gav.getArtifactId() );
129 assertEquals( "1.0", gav.getVersion() );
130 assertEquals( "1.0", gav.getBaseVersion() );
131 assertEquals( "javadoc", gav.getClassifier() );
132 assertEquals( "jar", gav.getExtension() );
133 assertEquals( null, gav.getSnapshotBuildNumber() );
134 assertEquals( null, gav.getSnapshotTimeStamp() );
135 assertEquals( "jruby-1.0-javadoc.jar.sha1", gav.getName() );
136 assertEquals( false, gav.isSnapshot() );
137 assertEquals( true, gav.isHash() );
138 assertEquals( Gav.HashType.sha1, gav.getHashType() );
139
140 path = gavCalculator.gavToPath( gav );
141 assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1", path );
142
143 gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0.jar" );
144
145 assertEquals( "org.jruby", gav.getGroupId() );
146 assertEquals( "jruby", gav.getArtifactId() );
147 assertEquals( "1.0", gav.getVersion() );
148 assertEquals( "1.0", gav.getBaseVersion() );
149 assertEquals( null, gav.getClassifier() );
150 assertEquals( "jar", gav.getExtension() );
151 assertEquals( null, gav.getSnapshotBuildNumber() );
152 assertEquals( null, gav.getSnapshotTimeStamp() );
153 assertEquals( "jruby-1.0.jar", gav.getName() );
154 assertEquals( false, gav.isSnapshot() );
155 assertEquals( false, gav.isHash() );
156 assertEquals( null, gav.getHashType() );
157
158 path = gavCalculator.gavToPath( gav );
159 assertEquals( "/org.jruby/jars/jruby-1.0.jar", path );
160
161 gav = gavCalculator.pathToGav( "/maven/jars/dom4j-1.7-20060614.jar" );
162
163 assertEquals( "maven", gav.getGroupId() );
164 assertEquals( "dom4j", gav.getArtifactId() );
165 assertEquals( "1.7-20060614", gav.getVersion() );
166 assertEquals( "1.7-20060614", gav.getBaseVersion() );
167 assertEquals( null, gav.getClassifier() );
168 assertEquals( "jar", gav.getExtension() );
169 assertEquals( null, gav.getSnapshotBuildNumber() );
170 assertEquals( null, gav.getSnapshotTimeStamp() );
171 assertEquals( "dom4j-1.7-20060614.jar", gav.getName() );
172 assertEquals( false, gav.isSnapshot() );
173 assertEquals( false, gav.isHash() );
174 assertEquals( null, gav.getHashType() );
175
176 path = gavCalculator.gavToPath( gav );
177 assertEquals( "/maven/jars/dom4j-1.7-20060614.jar", path );
178
179 gav = gavCalculator.pathToGav( "maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar" );
180
181 assertEquals( "maven", gav.getGroupId() );
182 assertEquals( "velocity", gav.getArtifactId() );
183 assertEquals( "1.5-SNAPSHOT", gav.getVersion() );
184 assertEquals( "1.5-SNAPSHOT", gav.getBaseVersion() );
185 assertEquals( "sources", gav.getClassifier() );
186 assertEquals( "jar", gav.getExtension() );
187 assertEquals( null, gav.getSnapshotBuildNumber() );
188 assertEquals( null, gav.getSnapshotTimeStamp() );
189 assertEquals( "velocity-1.5-SNAPSHOT-sources.jar", gav.getName() );
190 assertEquals( true, gav.isSnapshot() );
191 assertEquals( false, gav.isHash() );
192 assertEquals( null, gav.getHashType() );
193
194 path = gavCalculator.gavToPath( gav );
195 assertEquals( "/maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar", path );
196
197 gav = gavCalculator.pathToGav( "castor/jars/castor-0.9.9-xml.jar" );
198
199 assertEquals( "castor", gav.getGroupId() );
200 assertEquals( "castor", gav.getArtifactId() );
201 assertEquals( "0.9.9-xml", gav.getVersion() );
202 assertEquals( "0.9.9-xml", gav.getBaseVersion() );
203 assertEquals( null, gav.getClassifier() );
204 assertEquals( "jar", gav.getExtension() );
205 assertEquals( null, gav.getSnapshotBuildNumber() );
206 assertEquals( null, gav.getSnapshotTimeStamp() );
207 assertEquals( "castor-0.9.9-xml.jar", gav.getName() );
208 assertEquals( false, gav.isSnapshot() );
209 assertEquals( false, gav.isHash() );
210 assertEquals( null, gav.getHashType() );
211
212 path = gavCalculator.gavToPath( gav );
213 assertEquals( "/castor/jars/castor-0.9.9-xml.jar", path );
214
215 gav = gavCalculator.pathToGav( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom" );
216
217 assertEquals( "org.slf4j", gav.getGroupId() );
218 assertEquals( "slf4j-log4j12", gav.getArtifactId() );
219 assertEquals( "1.4.3", gav.getVersion() );
220 assertEquals( "1.4.3", gav.getBaseVersion() );
221 assertEquals( null, gav.getClassifier() );
222 assertEquals( "pom", gav.getExtension() );
223 assertEquals( null, gav.getSnapshotBuildNumber() );
224 assertEquals( null, gav.getSnapshotTimeStamp() );
225 assertEquals( "slf4j-log4j12-1.4.3.pom", gav.getName() );
226 assertEquals( false, gav.isSnapshot() );
227 assertEquals( false, gav.isHash() );
228 assertEquals( null, gav.getHashType() );
229
230 path = gavCalculator.gavToPath( gav );
231 assertEquals( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom", path );
232
233
234
235 gav = gavCalculator.pathToGav( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom" );
236
237 assertEquals( "xpp3", gav.getGroupId() );
238 assertEquals( "xpp3_min", gav.getArtifactId() );
239 assertEquals( "1.1.3.4.O", gav.getVersion() );
240 assertEquals( "1.1.3.4.O", gav.getBaseVersion() );
241 assertEquals( null, gav.getClassifier() );
242 assertEquals( "pom", gav.getExtension() );
243 assertEquals( null, gav.getSnapshotBuildNumber() );
244 assertEquals( null, gav.getSnapshotTimeStamp() );
245 assertEquals( "xpp3_min-1.1.3.4.O.pom", gav.getName() );
246 assertEquals( false, gav.isSnapshot() );
247 assertEquals( false, gav.isHash() );
248 assertEquals( null, gav.getHashType() );
249
250 path = gavCalculator.gavToPath( gav );
251 assertEquals( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom", path );
252 }
253
254 @Test
255 public void testNEXUS1336()
256 throws Exception
257 {
258 Gav gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar" );
259
260 assertEquals( "castor", gav.getGroupId() );
261 assertEquals( "castor-ejb", gav.getArtifactId() );
262 assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
263 assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
264 assertEquals( "client", gav.getClassifier() );
265 assertEquals( "jar", gav.getExtension() );
266 assertEquals( null, gav.getSnapshotBuildNumber() );
267 assertEquals( null, gav.getSnapshotTimeStamp() );
268 assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar", gav.getName() );
269 assertEquals( true, gav.isSnapshot() );
270 assertEquals( false, gav.isHash() );
271 assertEquals( null, gav.getHashType() );
272
273 String path = gavCalculator.gavToPath( gav );
274 assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar", path );
275
276 gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7.jar" );
277
278 assertEquals( "castor", gav.getGroupId() );
279 assertEquals( "castor-ejb", gav.getArtifactId() );
280 assertEquals( "1.0.7", gav.getVersion() );
281 assertEquals( "1.0.7", gav.getBaseVersion() );
282 assertEquals( null, gav.getClassifier() );
283 assertEquals( "jar", gav.getExtension() );
284 assertEquals( null, gav.getSnapshotBuildNumber() );
285 assertEquals( null, gav.getSnapshotTimeStamp() );
286 assertEquals( "castor-ejb-1.0.7.jar", 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( "/castor/jars/castor-ejb-1.0.7.jar", path );
293
294 gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1" );
295
296 assertEquals( "castor", gav.getGroupId() );
297 assertEquals( "castor-ejb", gav.getArtifactId() );
298 assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
299 assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
300 assertEquals( "client", gav.getClassifier() );
301 assertEquals( "jar", gav.getExtension() );
302 assertEquals( null, gav.getSnapshotBuildNumber() );
303 assertEquals( null, gav.getSnapshotTimeStamp() );
304 assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", gav.getName() );
305 assertEquals( true, gav.isSnapshot() );
306 assertEquals( true, gav.isHash() );
307 assertEquals( Gav.HashType.sha1, gav.getHashType() );
308
309 path = gavCalculator.gavToPath( gav );
310 assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", path );
311
312 gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-client.jar" );
313
314 assertEquals( "castor", gav.getGroupId() );
315 assertEquals( "castor-ejb", gav.getArtifactId() );
316 assertEquals( "1.0.7", gav.getVersion() );
317 assertEquals( "1.0.7", gav.getBaseVersion() );
318 assertEquals( "client", gav.getClassifier() );
319 assertEquals( "jar", gav.getExtension() );
320 assertEquals( null, gav.getSnapshotBuildNumber() );
321 assertEquals( null, gav.getSnapshotTimeStamp() );
322 assertEquals( "castor-ejb-1.0.7-client.jar", gav.getName() );
323 assertEquals( false, gav.isSnapshot() );
324 assertEquals( false, gav.isHash() );
325 assertEquals( null, gav.getHashType() );
326
327 path = gavCalculator.gavToPath( gav );
328 assertEquals( "/castor/ejbs/castor-ejb-1.0.7-client.jar", path );
329 }
330
331 @Test
332 public void testGavExtreme()
333 throws Exception
334 {
335 Gav gav = gavCalculator.pathToGav( "/" );
336 assertEquals( null, gav );
337
338 gav = gavCalculator.pathToGav( "/some/stupid/path" );
339 assertEquals( null, gav );
340
341 gav = gavCalculator.pathToGav( "/some/stupid/path/more/in/it" );
342 assertEquals( null, gav );
343
344 gav = gavCalculator.pathToGav( "/something/that/looks/" );
345 assertEquals( null, gav );
346
347 gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.blah" );
348 assertEquals( null, gav );
349
350
351
352
353 gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.pom" );
354 assertEquals( null, gav );
355
356
357
358
359 gav = gavCalculator.pathToGav( "/something/that/maven-metadata.xml" );
360 assertEquals( null, gav );
361
362
363
364
365 gav = gavCalculator.pathToGav( "/something/that/like-SNAPSHOT/maven-metadata.xml" );
366 assertEquals( null, gav );
367
368 }
369 }