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