]> source.dussan.org Git - archiva.git/blob
b8b2b98895b1c5c3f2a3284d7962b4b9fe40b241
[archiva.git] /
1 package org.apache.maven.archiva.discoverer;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
20 import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
21 import org.apache.maven.artifact.Artifact;
22 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
23
24 import java.io.File;
25 import java.net.MalformedURLException;
26 import java.util.Collections;
27 import java.util.Iterator;
28 import java.util.List;
29
30 /**
31  * Test the legacy artifact discoverer.
32  *
33  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
34  * @version $Id:LegacyArtifactDiscovererTest.java 437105 2006-08-26 17:22:22 +1000 (Sat, 26 Aug 2006) brett $
35  */
36 public class LegacyArtifactDiscovererTest
37     extends AbstractArtifactDiscovererTest
38 {
39     private static final List JAVAX_SQL_BLACKLIST = Collections.singletonList( "javax.sql/**" );
40
41     protected String getLayout()
42     {
43         return "legacy";
44     }
45
46     protected File getRepositoryFile()
47     {
48         return getTestFile( "src/test/legacy-repository" );
49     }
50
51     public void testDefaultExcludes()
52         throws DiscovererException
53     {
54         List artifacts = discoverArtifacts();
55         assertNotNull( "Check artifacts not null", artifacts );
56         boolean found = false;
57         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
58         {
59             DiscovererPath dPath = (DiscovererPath) i.next();
60
61             String path = dPath.getPath();
62
63             if ( path.indexOf( "CVS" ) >= 0 )
64             {
65                 found = true;
66                 assertEquals( "Check comment", "Artifact was in the specified list of exclusions", dPath.getComment() );
67             }
68         }
69         assertTrue( "Check exclusion was found", found );
70
71         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
72         {
73             Artifact a = (Artifact) i.next();
74             assertFalse( "Check not CVS", a.getFile().getPath().indexOf( "CVS" ) >= 0 );
75             assertFalse( "Check not .svn", a.getFile().getPath().indexOf( ".svn" ) >= 0 );
76         }
77     }
78
79     public void testStandardExcludes()
80         throws DiscovererException
81     {
82         List artifacts = discoverArtifacts();
83         assertNotNull( "Check artifacts not null", artifacts );
84         boolean found = false;
85         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
86         {
87             DiscovererPath dPath = (DiscovererPath) i.next();
88
89             String path = dPath.getPath();
90
91             if ( "KEYS".equals( path ) )
92             {
93                 found = true;
94                 assertEquals( "Check comment", "Artifact was in the specified list of exclusions", dPath.getComment() );
95             }
96         }
97         assertTrue( "Check exclusion was found", found );
98
99         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
100         {
101             Artifact a = (Artifact) i.next();
102             assertFalse( "Check not KEYS", "KEYS".equals( a.getFile().getName() ) );
103         }
104     }
105
106     public void testBlacklistedExclude()
107         throws DiscovererException
108     {
109         List artifacts = discoverArtifactsWithBlacklist();
110         assertNotNull( "Check artifacts not null", artifacts );
111         boolean found = false;
112         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
113         {
114             DiscovererPath dPath = (DiscovererPath) i.next();
115
116             String path = dPath.getPath();
117
118             if ( "javax.sql/jars/jdbc-2.0.jar".equals( path.replace( '\\', '/' ) ) )
119             {
120                 found = true;
121                 assertEquals( "Check comment is about blacklisting", "Artifact was in the specified list of exclusions",
122                               dPath.getComment() );
123             }
124         }
125         assertTrue( "Check exclusion was found", found );
126
127         assertFalse( "Check jdbc not included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
128     }
129
130     public void testKickoutWithShortPath()
131         throws DiscovererException
132     {
133         List artifacts = discoverArtifacts();
134         assertNotNull( "Check artifacts not null", artifacts );
135         boolean found = false;
136         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
137         {
138             DiscovererPath dPath = (DiscovererPath) i.next();
139
140             String path = dPath.getPath();
141
142             if ( "invalid/invalid-1.0.jar".equals( path.replace( '\\', '/' ) ) )
143             {
144                 found = true;
145                 assertEquals( "Check reason for kickout",
146                               "Path does not match a legacy repository path for an artifact", dPath.getComment() );
147             }
148         }
149         assertTrue( "Check kickout was found", found );
150
151         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
152         {
153             Artifact a = (Artifact) i.next();
154             assertFalse( "Check not invalid-1.0.jar", "invalid-1.0.jar".equals( a.getFile().getName() ) );
155         }
156     }
157
158     public void testKickoutWithLongPath()
159         throws DiscovererException
160     {
161         List artifacts = discoverArtifacts();
162         assertNotNull( "Check artifacts not null", artifacts );
163         boolean found = false;
164         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
165         {
166             DiscovererPath dPath = (DiscovererPath) i.next();
167
168             String path = dPath.getPath();
169
170             if ( "invalid/jars/1.0/invalid-1.0.jar".equals( path.replace( '\\', '/' ) ) )
171             {
172                 found = true;
173                 assertEquals( "Check reason for kickout",
174                               "Path does not match a legacy repository path for an artifact", dPath.getComment() );
175             }
176         }
177         assertTrue( "Check kickout was found", found );
178
179         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
180         {
181             Artifact a = (Artifact) i.next();
182             assertFalse( "Check not invalid-1.0.jar", "invalid-1.0.jar".equals( a.getFile().getName() ) );
183         }
184     }
185
186     public void testKickoutWithInvalidType()
187         throws DiscovererException
188     {
189         List artifacts = discoverArtifacts();
190         assertNotNull( "Check artifacts not null", artifacts );
191         boolean found = false;
192         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
193         {
194             DiscovererPath dPath = (DiscovererPath) i.next();
195
196             String path = dPath.getPath();
197
198             if ( "invalid/foo/invalid-1.0.foo".equals( path.replace( '\\', '/' ) ) )
199             {
200                 found = true;
201                 assertEquals( "Check reason for kickout", "Path artifact type does not corresspond to an artifact type",
202                               dPath.getComment() );
203             }
204         }
205         assertTrue( "Check kickout was found", found );
206
207         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
208         {
209             Artifact a = (Artifact) i.next();
210             assertFalse( "Check not invalid-1.0.foo", "invalid-1.0.foo".equals( a.getFile().getName() ) );
211         }
212     }
213
214     public void testKickoutWithNoExtension()
215         throws DiscovererException
216     {
217         List artifacts = discoverArtifacts();
218         assertNotNull( "Check artifacts not null", artifacts );
219         boolean found = false;
220         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
221         {
222             DiscovererPath dPath = (DiscovererPath) i.next();
223
224             String path = dPath.getPath();
225
226             if ( "invalid/jars/no-extension".equals( path.replace( '\\', '/' ) ) )
227             {
228                 found = true;
229                 assertEquals( "Check reason for kickout", "Path filename does not have an extension",
230                               dPath.getComment() );
231             }
232         }
233         assertTrue( "Check kickout was found", found );
234
235         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
236         {
237             Artifact a = (Artifact) i.next();
238             assertFalse( "Check not 'no-extension'", "no-extension".equals( a.getFile().getName() ) );
239         }
240     }
241
242     public void testKickoutWithWrongExtension()
243         throws DiscovererException
244     {
245         List artifacts = discoverArtifacts();
246         assertNotNull( "Check artifacts not null", artifacts );
247         boolean found = false;
248         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
249         {
250             DiscovererPath dPath = (DiscovererPath) i.next();
251
252             String path = dPath.getPath();
253
254             if ( "invalid/jars/invalid-1.0.rar".equals( path.replace( '\\', '/' ) ) )
255             {
256                 found = true;
257                 assertEquals( "Check reason for kickout", "Path type does not match the extension",
258                               dPath.getComment() );
259             }
260         }
261         assertTrue( "Check kickout was found", found );
262
263         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
264         {
265             Artifact a = (Artifact) i.next();
266             assertFalse( "Check not 'invalid-1.0.rar'", "invalid-1.0.rar".equals( a.getFile().getName() ) );
267         }
268     }
269
270     public void testKickoutWithNoVersion()
271         throws DiscovererException
272     {
273         List artifacts = discoverArtifacts();
274         assertNotNull( "Check artifacts not null", artifacts );
275         boolean found = false;
276         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
277         {
278             DiscovererPath dPath = (DiscovererPath) i.next();
279
280             String path = dPath.getPath();
281
282             if ( "invalid/jars/invalid.jar".equals( path.replace( '\\', '/' ) ) )
283             {
284                 found = true;
285                 assertEquals( "Check reason for kickout", "Path filename version is empty", dPath.getComment() );
286             }
287         }
288         assertTrue( "Check kickout was found", found );
289
290         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
291         {
292             Artifact a = (Artifact) i.next();
293             assertFalse( "Check not 'invalid.jar'", "invalid.jar".equals( a.getFile().getName() ) );
294         }
295     }
296
297     public void testInclusion()
298         throws DiscovererException
299     {
300         List artifacts = discoverArtifactsWithSnapshots();
301         assertNotNull( "Check artifacts not null", artifacts );
302
303         assertTrue( "Check normal included",
304                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0" ) ) );
305     }
306
307     public void testTextualVersion()
308         throws DiscovererException
309     {
310         List artifacts = discoverArtifactsWithSnapshots();
311         assertNotNull( "Check artifacts not null", artifacts );
312
313         assertTrue( "Check normal included",
314                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "UNKNOWN" ) ) );
315     }
316
317     public void testArtifactWithClassifier()
318         throws DiscovererException
319     {
320         List artifacts = discoverArtifactsWithSnapshots();
321         assertNotNull( "Check artifacts not null", artifacts );
322
323         assertTrue( "Check normal included",
324                     artifacts.contains( createArtifact( "org.apache.maven", "some-ejb", "1.0", "jar", "client" ) ) );
325     }
326
327     public void testJavaSourcesInclusion()
328         throws DiscovererException
329     {
330         List artifacts = discoverArtifactsWithSnapshots();
331         assertNotNull( "Check artifacts not null", artifacts );
332
333         assertTrue( "Check normal included", artifacts.contains(
334             createArtifact( "org.apache.maven", "testing", "1.0", "java-source", "sources" ) ) );
335     }
336
337     public void testDistributionInclusion()
338         throws DiscovererException
339     {
340         List artifacts = discoverArtifactsWithSnapshots();
341         assertNotNull( "Check artifacts not null", artifacts );
342
343         assertTrue( "Check zip included",
344                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-zip" ) ) );
345
346         assertTrue( "Check tar.gz included",
347                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-tgz" ) ) );
348     }
349
350     public void testSnapshotInclusion()
351         throws DiscovererException
352     {
353         List artifacts = discoverArtifactsWithSnapshots();
354         assertNotNull( "Check artifacts not null", artifacts );
355
356         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
357         assertTrue( "Check snapshot included",
358                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0-20050611.112233-1" ) ) );
359     }
360
361     public void testSnapshotExclusion()
362         throws DiscovererException
363     {
364         List artifacts = discoverArtifacts();
365         assertNotNull( "Check artifacts not null", artifacts );
366
367         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
368         assertFalse( "Check snapshot included",
369                      artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0-20050611.112233-1" ) ) );
370     }
371
372     public void testFileSet()
373         throws DiscovererException
374     {
375         List artifacts = discoverArtifactsWithSnapshots();
376         assertNotNull( "Check artifacts not null", artifacts );
377
378         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
379         {
380             Artifact artifact = (Artifact) i.next();
381             assertNotNull( "Check file is set", artifact.getFile() );
382         }
383     }
384
385     public void testRepositorySet()
386         throws MalformedURLException, DiscovererException
387     {
388         List artifacts = discoverArtifactsWithSnapshots();
389         assertNotNull( "Check artifacts not null", artifacts );
390
391         String url = repository.getUrl();
392         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
393         {
394             Artifact artifact = (Artifact) i.next();
395             assertNotNull( "Check repository set", artifact.getRepository() );
396             assertEquals( "Check repository url is correct", url, artifact.getRepository().getUrl() );
397         }
398     }
399
400     public void testWrongArtifactPackaging()
401         throws ComponentLookupException, DiscovererException
402     {
403         try
404         {
405             discoverer.buildArtifact( "org.apache.maven.test/jars/artifactId-1.0.jar.md5" );
406
407             fail( "Artifact should be null for wrong package extension" );
408         }
409         catch ( DiscovererException e )
410         {
411             // excellent
412         }
413     }
414
415     public void testNoArtifactId()
416         throws DiscovererException
417     {
418         try
419         {
420             discoverer.buildArtifact( "groupId/jars/-1.0.jar" );
421
422             fail( "Artifact should be null when artifactId is missing" );
423         }
424         catch ( DiscovererException e )
425         {
426             // excellent
427         }
428
429         try
430         {
431             discoverer.buildArtifact( "groupId/jars/1.0.jar" );
432
433             fail( "Artifact should be null when artifactId is missing" );
434         }
435         catch ( DiscovererException e )
436         {
437             // excellent
438         }
439     }
440
441     public void testNoType()
442         throws ComponentLookupException, DiscovererException
443     {
444         try
445         {
446             discoverer.buildArtifact( "invalid/invalid/1/invalid-1" );
447
448             fail( "Artifact should be null for no type" );
449         }
450         catch ( DiscovererException e )
451         {
452             // excellent
453         }
454     }
455
456     public void testSnapshot()
457         throws ComponentLookupException, DiscovererException
458     {
459         String testPath = "org.apache.maven.test/jars/maven-model-1.0-SNAPSHOT.jar";
460
461         Artifact artifact = discoverer.buildArtifact( testPath );
462
463         assertEquals( createArtifact( "org.apache.maven.test", "maven-model", "1.0-SNAPSHOT" ), artifact );
464     }
465
466     public void testFinal()
467         throws ComponentLookupException, DiscovererException
468     {
469         String testPath = "org.apache.maven.test/jars/maven-model-1.0-final-20060606.jar";
470
471         Artifact artifact = discoverer.buildArtifact( testPath );
472
473         assertEquals( createArtifact( "org.apache.maven.test", "maven-model", "1.0-final-20060606" ), artifact );
474     }
475
476     public void testNormal()
477         throws ComponentLookupException, DiscovererException
478     {
479         String testPath = "javax.sql/jars/jdbc-2.0.jar";
480
481         Artifact artifact = discoverer.buildArtifact( testPath );
482
483         assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
484     }
485
486     public void testJavadoc()
487         throws ComponentLookupException, DiscovererException
488     {
489         String testPath = "javax.sql/javadoc.jars/jdbc-2.0-javadoc.jar";
490     
491         Artifact artifact = discoverer.buildArtifact( testPath );
492     
493         assertEquals( createArtifact( "javax.sql", "jdbc", "2.0", "javadoc.jar", "javadoc" ), artifact );
494     }
495
496     public void testSources()
497         throws ComponentLookupException, DiscovererException
498     {
499         String testPath = "javax.sql/java-sources/jdbc-2.0-sources.jar";
500     
501         Artifact artifact = discoverer.buildArtifact( testPath );
502     
503         assertEquals( createArtifact( "javax.sql", "jdbc", "2.0", "java-source", "sources" ), artifact );
504     }
505
506     public void testPlugin()
507         throws ComponentLookupException, DiscovererException
508     {
509         String testPath = "maven/plugins/maven-test-plugin-1.8.jar";
510     
511         Artifact artifact = discoverer.buildArtifact( testPath );
512     
513         assertEquals( createArtifact( "maven", "maven-test-plugin", "1.8", "plugin" ), artifact );
514     }
515
516     
517     private List discoverArtifacts()
518         throws DiscovererException
519     {
520         return discoverer.discoverArtifacts( repository, null, new SnapshotArtifactFilter() );
521     }
522
523     private List discoverArtifactsWithBlacklist()
524         throws DiscovererException
525     {
526         return discoverer.discoverArtifacts( repository, JAVAX_SQL_BLACKLIST, new SnapshotArtifactFilter() );
527     }
528
529     private List discoverArtifactsWithSnapshots()
530         throws DiscovererException
531     {
532         return discoverer.discoverArtifacts( repository, null, new AcceptAllArtifactFilter() );
533     }
534 }