]> source.dussan.org Git - archiva.git/blob
9027421247907c55f4bc6284d0e89a9338c77b5a
[archiva.git] /
1 package org.apache.maven.repository.discovery;
2
3 /*
4  * Copyright 2001-2005 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.codehaus.plexus.PlexusTestCase;
22
23 import java.io.File;
24 import java.util.Iterator;
25 import java.util.List;
26
27 /**
28  * Test the default artifact discoverer.
29  *
30  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
31  * @version $Id$
32  * @todo test location of poms, checksums
33  */
34 public class DefaultArtifactDiscovererTest
35     extends PlexusTestCase
36 {
37     private ArtifactDiscoverer discoverer;
38
39     private ArtifactFactory factory;
40
41     private File repositoryLocation;
42
43     protected void setUp()
44         throws Exception
45     {
46         super.setUp();
47
48         discoverer = (ArtifactDiscoverer) lookup( ArtifactDiscoverer.ROLE, "default" );
49
50         factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
51
52         repositoryLocation = getTestFile( "src/test/repository" );
53     }
54
55     public void testDefaultExcludes()
56     {
57         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
58         assertNotNull( "Check artifacts not null", artifacts );
59         boolean found = false;
60         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
61         {
62             String path = (String) i.next();
63
64             found = path.indexOf( ".svn" ) >= 0;
65         }
66         assertTrue( "Check exclusion was found", found );
67
68         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
69         {
70             Artifact a = (Artifact) i.next();
71             assertFalse( "Check not .svn", a.getFile().getPath().indexOf( ".svn" ) >= 0 );
72         }
73     }
74
75     public void testStandardExcludes()
76     {
77         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
78         assertNotNull( "Check artifacts not null", artifacts );
79         boolean found = false;
80         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
81         {
82             String path = (String) i.next();
83
84             found = path.equals( "KEYS" );
85         }
86         assertTrue( "Check exclusion was found", found );
87
88         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
89         {
90             Artifact a = (Artifact) i.next();
91             assertFalse( "Check not KEYS", a.getFile().getName().equals( "KEYS" ) );
92         }
93     }
94
95     public void testBlacklistedExclude()
96     {
97         List artifacts = discoverer.discoverArtifacts( repositoryLocation, "javax/**", false );
98         assertNotNull( "Check artifacts not null", artifacts );
99         boolean found = false;
100         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
101         {
102             String path = (String) i.next();
103
104             found = path.replace( '\\', '/' ).equals( "javax/sql/jdbc/2.0/jdbc-2.0.jar" );
105         }
106         assertTrue( "Check exclusion was found", found );
107
108         assertFalse( "Check jdbc not included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
109     }
110
111     public void testKickoutWithShortPath()
112     {
113         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
114         assertNotNull( "Check artifacts not null", artifacts );
115         boolean found = false;
116         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
117         {
118             String path = (String) i.next();
119
120             found = path.replace( '\\', '/' ).equals( "invalid/invalid-1.0.jar" );
121         }
122         assertTrue( "Check kickout was found", found );
123
124         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
125         {
126             Artifact a = (Artifact) i.next();
127             assertFalse( "Check not invalid-1.0.jar", a.getFile().getName().equals( "invalid-1.0.jar" ) );
128         }
129     }
130
131     public void testKickoutWithWrongArtifactId()
132     {
133         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
134         assertNotNull( "Check artifacts not null", artifacts );
135         boolean found = false;
136         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
137         {
138             String path = (String) i.next();
139
140             found = path.replace( '\\', '/' ).equals(
141                 "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar" );
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 wrong jar",
149                          a.getFile().getName().equals( "wrong-artifactId-1.0-20050611.112233-1.jar" ) );
150         }
151     }
152
153     public void testKickoutWithNoType()
154     {
155         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
156         assertNotNull( "Check artifacts not null", artifacts );
157         boolean found = false;
158         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
159         {
160             String path = (String) i.next();
161
162             found = path.replace( '\\', '/' ).equals( "invalid/invalid/1/invalid-1" );
163         }
164         assertTrue( "Check kickout was found", found );
165
166         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
167         {
168             Artifact a = (Artifact) i.next();
169             assertFalse( "Check not 'invalid-1'", a.getFile().getName().equals( "invalid-1" ) );
170         }
171     }
172
173     public void testKickoutWithWrongVersion()
174     {
175         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
176         assertNotNull( "Check artifacts not null", artifacts );
177         boolean found = false;
178         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
179         {
180             String path = (String) i.next();
181
182             found = path.replace( '\\', '/' ).equals( "invalid/invalid/1.0/invalid-2.0.jar" );
183         }
184         assertTrue( "Check kickout was found", found );
185
186         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
187         {
188             Artifact a = (Artifact) i.next();
189             assertFalse( "Check not 'invalid-2.0.jar'", a.getFile().getName().equals( "invalid-2.0.jar" ) );
190         }
191     }
192
193     public void testKickoutWithLongerVersion()
194     {
195         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
196         assertNotNull( "Check artifacts not null", artifacts );
197         boolean found = false;
198         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
199         {
200             String path = (String) i.next();
201
202             found = path.replace( '\\', '/' ).equals( "invalid/invalid/1.0/invalid-1.0b.jar" );
203         }
204         assertTrue( "Check kickout was found", found );
205
206         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
207         {
208             Artifact a = (Artifact) i.next();
209             assertFalse( "Check not 'invalid-1.0b.jar'", a.getFile().getName().equals( "invalid-1.0b.jar" ) );
210         }
211     }
212
213     public void testKickoutWithWrongSnapshotVersion()
214     {
215         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
216         assertNotNull( "Check artifacts not null", artifacts );
217         boolean found = false;
218         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
219         {
220             String path = (String) i.next();
221
222             found = path.replace( '\\', '/' ).equals( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar" );
223         }
224         assertTrue( "Check kickout was found", found );
225
226         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
227         {
228             Artifact a = (Artifact) i.next();
229             assertFalse( "Check not 'invalid-1.0.jar'", a.getFile().getName().equals( "invalid-1.0.jar" ) );
230         }
231     }
232
233     public void testKickoutWithSnapshotBaseVersion()
234     {
235         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
236         assertNotNull( "Check artifacts not null", artifacts );
237         boolean found = false;
238         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
239         {
240             String path = (String) i.next();
241
242             found = path.replace( '\\', '/' ).equals(
243                 "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
244         }
245         assertTrue( "Check kickout was found", found );
246
247         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
248         {
249             Artifact a = (Artifact) i.next();
250             assertFalse( "Check not 'invalid-1.0-20050611-123456-1.jar'",
251                          a.getFile().getName().equals( "invalid-1.0-20050611.123456-1.jar" ) );
252         }
253     }
254
255     public void testInclusion()
256     {
257         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
258         assertNotNull( "Check artifacts not null", artifacts );
259
260         assertTrue( "Check normal included",
261                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0" ) ) );
262     }
263
264     public void testArtifactWithClassifier()
265     {
266         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
267         assertNotNull( "Check artifacts not null", artifacts );
268
269         assertTrue( "Check normal included",
270                     artifacts.contains( createArtifact( "org.apache.maven", "some-ejb", "1.0", "jar", "client" ) ) );
271     }
272
273     public void testJavaSourcesInclusion()
274     {
275         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
276         assertNotNull( "Check artifacts not null", artifacts );
277
278         assertTrue( "Check normal included",
279                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "java-source" ) ) );
280     }
281
282     public void testDistributionInclusion()
283     {
284         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
285         assertNotNull( "Check artifacts not null", artifacts );
286
287         assertTrue( "Check zip included",
288                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-zip" ) ) );
289
290         assertTrue( "Check tar.gz included",
291                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-tgz" ) ) );
292     }
293
294     public void testSnapshotInclusion()
295     {
296         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
297         assertNotNull( "Check artifacts not null", artifacts );
298
299         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
300         assertTrue( "Check snapshot included",
301                     artifacts.contains( createArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1" ) ) );
302     }
303
304     public void testSnapshotInclusionWithClassifier()
305     {
306         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
307         assertNotNull( "Check artifacts not null", artifacts );
308
309         assertTrue( "Check snapshot included", artifacts.contains(
310             createArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1", "jar", "javadoc" ) ) );
311     }
312
313     public void testSnapshotExclusion()
314     {
315         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
316         assertNotNull( "Check artifacts not null", artifacts );
317
318         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
319         assertFalse( "Check snapshot included",
320                      artifacts.contains( createArtifact( "org.apache.maven", "test", "1.0-SNAPSHOT" ) ) );
321     }
322
323     private Artifact createArtifact( String groupId, String artifactId, String version )
324     {
325         return factory.createArtifact( groupId, artifactId, version, null, "jar" );
326     }
327
328     private Artifact createArtifact( String groupId, String artifactId, String version, String type )
329     {
330         return factory.createArtifact( groupId, artifactId, version, null, type );
331     }
332
333     private Artifact createArtifact( String groupId, String artifactId, String version, String type, String classifier )
334     {
335         return factory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier );
336     }
337
338 }