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