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