]> source.dussan.org Git - archiva.git/blob
83614f9815a8352f3434eab7f414543be1d032cf
[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.apache.maven.model.Model;
25 import org.codehaus.plexus.PlexusTestCase;
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 default artifact discoverer.
34  *
35  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
36  * @version $Id$
37  * @todo test location of poms, checksums
38  */
39 public class DefaultArtifactDiscovererTest
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,
54                                                   "org.apache.maven.repository.discovery.DefaultArtifactDiscoverer" );
55
56         factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
57
58         File basedir = getTestFile( "src/test/repository" );
59         ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
60
61         ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
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/**", 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/jdbc/2.0/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 testKickoutWithWrongArtifactId()
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 = "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar".equals(
151                 path.replace( '\\', '/' ) );
152         }
153         assertTrue( "Check kickout was found", found );
154
155         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
156         {
157             Artifact a = (Artifact) i.next();
158             assertFalse( "Check not wrong jar",
159                          "wrong-artifactId-1.0-20050611.112233-1.jar".equals( a.getFile().getName() ) );
160         }
161     }
162
163     public void testKickoutWithNoType()
164     {
165         List artifacts = discoverer.discoverArtifacts( repository, null, false );
166         assertNotNull( "Check artifacts not null", artifacts );
167         boolean found = false;
168         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
169         {
170             String path = (String) i.next();
171
172             found = "invalid/invalid/1/invalid-1".equals( path.replace( '\\', '/' ) );
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'", "invalid-1".equals( a.getFile().getName() ) );
180         }
181     }
182
183     public void testKickoutWithWrongVersion()
184     {
185         List artifacts = discoverer.discoverArtifacts( repository, null, false );
186         assertNotNull( "Check artifacts not null", artifacts );
187         boolean found = false;
188         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
189         {
190             String path = (String) i.next();
191
192             found = "invalid/invalid/1.0/invalid-2.0.jar".equals( path.replace( '\\', '/' ) );
193         }
194         assertTrue( "Check kickout was found", found );
195
196         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
197         {
198             Artifact a = (Artifact) i.next();
199             assertFalse( "Check not 'invalid-2.0.jar'", "invalid-2.0.jar".equals( a.getFile().getName() ) );
200         }
201     }
202
203     public void testKickoutWithLongerVersion()
204     {
205         List artifacts = discoverer.discoverArtifacts( repository, null, false );
206         assertNotNull( "Check artifacts not null", artifacts );
207         boolean found = false;
208         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
209         {
210             String path = (String) i.next();
211
212             found = "invalid/invalid/1.0/invalid-1.0b.jar".equals( path.replace( '\\', '/' ) );
213         }
214         assertTrue( "Check kickout was found", found );
215
216         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
217         {
218             Artifact a = (Artifact) i.next();
219             assertFalse( "Check not 'invalid-1.0b.jar'", "invalid-1.0b.jar".equals( a.getFile().getName() ) );
220         }
221     }
222
223     public void testKickoutWithWrongSnapshotVersion()
224     {
225         List artifacts = discoverer.discoverArtifacts( repository, null, false );
226         assertNotNull( "Check artifacts not null", artifacts );
227         boolean found = false;
228         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
229         {
230             String path = (String) i.next();
231
232             found = "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar".equals( path.replace( '\\', '/' ) );
233         }
234         assertTrue( "Check kickout was found", found );
235
236         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
237         {
238             Artifact a = (Artifact) i.next();
239             assertFalse( "Check not 'invalid-1.0.jar'", "invalid-1.0.jar".equals( a.getFile().getName() ) );
240         }
241     }
242
243     public void testKickoutWithSnapshotBaseVersion()
244     {
245         List artifacts = discoverer.discoverArtifacts( repository, null, false );
246         assertNotNull( "Check artifacts not null", artifacts );
247         boolean found = false;
248         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
249         {
250             String path = (String) i.next();
251
252             found = "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar".equals(
253                 path.replace( '\\', '/' ) );
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-20050611-123456-1.jar'",
261                          "invalid-1.0-20050611.123456-1.jar".equals( a.getFile().getName() ) );
262         }
263     }
264
265     public void testInclusion()
266     {
267         List artifacts = discoverer.discoverArtifacts( repository, null, true );
268         assertNotNull( "Check artifacts not null", artifacts );
269
270         assertTrue( "Check normal included",
271                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0" ) ) );
272     }
273
274     public void testArtifactWithClassifier()
275     {
276         List artifacts = discoverer.discoverArtifacts( repository, null, true );
277         assertNotNull( "Check artifacts not null", artifacts );
278
279         assertTrue( "Check normal included",
280                     artifacts.contains( createArtifact( "org.apache.maven", "some-ejb", "1.0", "jar", "client" ) ) );
281     }
282
283     public void testJavaSourcesInclusion()
284     {
285         List artifacts = discoverer.discoverArtifacts( repository, null, true );
286         assertNotNull( "Check artifacts not null", artifacts );
287
288         assertTrue( "Check normal included", artifacts.contains(
289             createArtifact( "org.apache.maven", "testing", "1.0", "java-source", "sources" ) ) );
290     }
291
292     public void testDistributionInclusion()
293     {
294         List artifacts = discoverer.discoverArtifacts( repository, null, true );
295         assertNotNull( "Check artifacts not null", artifacts );
296
297         assertTrue( "Check zip included",
298                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-zip" ) ) );
299
300         assertTrue( "Check tar.gz included",
301                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-tgz" ) ) );
302     }
303
304     public void testSnapshotInclusion()
305     {
306         List artifacts = discoverer.discoverArtifacts( repository, null, true );
307         assertNotNull( "Check artifacts not null", artifacts );
308
309         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
310         assertTrue( "Check snapshot included",
311                     artifacts.contains( createArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1" ) ) );
312     }
313
314     public void testSnapshotInclusionWithClassifier()
315     {
316         List artifacts = discoverer.discoverArtifacts( repository, null, true );
317         assertNotNull( "Check artifacts not null", artifacts );
318
319         assertTrue( "Check snapshot included", artifacts.contains(
320             createArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1", "jar", "javadoc" ) ) );
321     }
322
323     public void testSnapshotExclusion()
324     {
325         List artifacts = discoverer.discoverArtifacts( repository, null, false );
326         assertNotNull( "Check artifacts not null", artifacts );
327
328         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
329         assertFalse( "Check snapshot included",
330                      artifacts.contains( createArtifact( "org.apache.maven", "test", "1.0-SNAPSHOT" ) ) );
331     }
332
333     public void testFileSet()
334     {
335         List artifacts = discoverer.discoverArtifacts( repository, null, true );
336         assertNotNull( "Check artifacts not null", artifacts );
337
338         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
339         {
340             Artifact artifact = (Artifact) i.next();
341             assertNotNull( "Check file is set", artifact.getFile() );
342         }
343     }
344
345     public void testRepositorySet()
346         throws MalformedURLException
347     {
348         List artifacts = discoverer.discoverArtifacts( repository, null, true );
349         assertNotNull( "Check artifacts not null", artifacts );
350
351         String url = repository.getUrl();
352         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
353         {
354             Artifact artifact = (Artifact) i.next();
355             assertNotNull( "Check repository set", artifact.getRepository() );
356             assertEquals( "Check repository url is correct", url, artifact.getRepository().getUrl() );
357         }
358     }
359
360     public void testStandalonePoms()
361     {
362         List artifacts = discoverer.discoverStandalonePoms( repository, null, false );
363         assertEquals( 4, artifacts.size() );
364         Iterator itr = artifacts.iterator();
365         //Artifact artifact = (Artifact) itr.next();
366         Model model = (Model) itr.next();
367         Artifact artifact =
368             createArtifact( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPackaging() );
369         assertEquals( "org.apache.maven", artifact.getGroupId() );
370         assertEquals( "B", artifact.getArtifactId() );
371         assertEquals( "1.0", artifact.getVersion() );
372         model = (Model) itr.next();
373         artifact =
374             createArtifact( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPackaging() );
375         assertEquals( "org.apache.maven", artifact.getGroupId() );
376         assertEquals( "B", artifact.getArtifactId() );
377         assertEquals( "2.0", artifact.getVersion() );
378         model = (Model) itr.next();
379         artifact =
380             createArtifact( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPackaging() );
381         assertEquals( "org.apache.maven", artifact.getGroupId() );
382         assertEquals( "discovery", artifact.getArtifactId() );
383         assertEquals( "1.0", artifact.getVersion() );
384         model = (Model) itr.next();
385         artifact =
386             createArtifact( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPackaging() );
387         assertEquals( "org.apache.testgroup", artifact.getGroupId() );
388         assertEquals( "discovery", artifact.getArtifactId() );
389         assertEquals( "1.0", artifact.getVersion() );
390     }
391
392     private Artifact createArtifact( String groupId, String artifactId, String version )
393     {
394         return factory.createArtifact( groupId, artifactId, version, null, "jar" );
395     }
396
397     private Artifact createArtifact( String groupId, String artifactId, String version, String type )
398     {
399         return factory.createArtifact( groupId, artifactId, version, null, type );
400     }
401
402     private Artifact createArtifact( String groupId, String artifactId, String version, String type, String classifier )
403     {
404         return factory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier );
405     }
406
407 }