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