]> source.dussan.org Git - archiva.git/blob
3798f9aeca2821e8ed086e089e9248c74e3b1be6
[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 legacy artifact discoverer.
29  *
30  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
31  * @version $Id$
32  * @todo share as much as possible with default via abstract test case
33  */
34 public class LegacyArtifactDiscovererTest
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, "legacy" );
49
50         factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
51
52         repositoryLocation = getTestFile( "src/test/legacy-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.sql/**", 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/jars/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 testKickoutWithLongPath()
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( "invalid/jars/1.0/invalid-1.0.jar" );
141         }
142         assertTrue( "Check kickout was found", found );
143
144         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
145         {
146             Artifact a = (Artifact) i.next();
147             assertFalse( "Check not invalid-1.0.jar", a.getFile().getName().equals( "invalid-1.0.jar" ) );
148         }
149     }
150
151     public void testKickoutWithInvalidType()
152     {
153         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
154         assertNotNull( "Check artifacts not null", artifacts );
155         boolean found = false;
156         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
157         {
158             String path = (String) i.next();
159
160             found = path.replace( '\\', '/' ).equals( "invalid/foo/invalid-1.0.foo" );
161         }
162         assertTrue( "Check kickout was found", found );
163
164         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
165         {
166             Artifact a = (Artifact) i.next();
167             assertFalse( "Check not invalid-1.0.foo", a.getFile().getName().equals( "invalid-1.0.foo" ) );
168         }
169     }
170
171     public void testKickoutWithNoExtension()
172     {
173         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
174         assertNotNull( "Check artifacts not null", artifacts );
175         boolean found = false;
176         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
177         {
178             String path = (String) i.next();
179
180             found = path.replace( '\\', '/' ).equals( "invalid/jars/no-extension" );
181         }
182         assertTrue( "Check kickout was found", found );
183
184         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
185         {
186             Artifact a = (Artifact) i.next();
187             assertFalse( "Check not 'no-extension'", a.getFile().getName().equals( "no-extension" ) );
188         }
189     }
190
191     public void testKickoutWithWrongExtension()
192     {
193         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
194         assertNotNull( "Check artifacts not null", artifacts );
195         boolean found = false;
196         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
197         {
198             String path = (String) i.next();
199
200             found = path.replace( '\\', '/' ).equals( "invalid/jars/invalid-1.0.rar" );
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.rar'", a.getFile().getName().equals( "invalid-1.0.rar" ) );
208         }
209     }
210
211     public void testKickoutWithNoVersion()
212     {
213         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
214         assertNotNull( "Check artifacts not null", artifacts );
215         boolean found = false;
216         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
217         {
218             String path = (String) i.next();
219
220             found = path.replace( '\\', '/' ).equals( "invalid/jars/invalid.jar" );
221         }
222         assertTrue( "Check kickout was found", found );
223
224         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
225         {
226             Artifact a = (Artifact) i.next();
227             assertFalse( "Check not 'invalid.jar'", a.getFile().getName().equals( "invalid.jar" ) );
228         }
229     }
230
231     public void testInclusion()
232     {
233         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
234         assertNotNull( "Check artifacts not null", artifacts );
235
236         assertTrue( "Check normal included",
237                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0" ) ) );
238     }
239
240     public void testTextualVersion()
241     {
242         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
243         assertNotNull( "Check artifacts not null", artifacts );
244
245         assertTrue( "Check normal included",
246                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "UNKNOWN" ) ) );
247     }
248
249     public void testArtifactWithClassifier()
250     {
251         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
252         assertNotNull( "Check artifacts not null", artifacts );
253
254         assertTrue( "Check normal included",
255                     artifacts.contains( createArtifact( "org.apache.maven", "some-ejb", "1.0", "jar", "client" ) ) );
256     }
257
258     public void testJavaSourcesInclusion()
259     {
260         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
261         assertNotNull( "Check artifacts not null", artifacts );
262
263         assertTrue( "Check normal included",
264                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "java-source" ) ) );
265     }
266
267     public void testDistributionInclusion()
268     {
269         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
270         assertNotNull( "Check artifacts not null", artifacts );
271
272         assertTrue( "Check zip included",
273                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-zip" ) ) );
274
275         assertTrue( "Check tar.gz included",
276                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0", "distribution-tgz" ) ) );
277     }
278
279     public void testSnapshotInclusion()
280     {
281         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, true );
282         assertNotNull( "Check artifacts not null", artifacts );
283
284         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
285         assertTrue( "Check snapshot included",
286                     artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0-20050611.112233-1" ) ) );
287     }
288
289     public void testSnapshotExclusion()
290     {
291         List artifacts = discoverer.discoverArtifacts( repositoryLocation, null, false );
292         assertNotNull( "Check artifacts not null", artifacts );
293
294         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
295         assertFalse( "Check snapshot included",
296                      artifacts.contains( createArtifact( "org.apache.maven", "testing", "1.0-20050611.112233-1" ) ) );
297     }
298
299     private Artifact createArtifact( String groupId, String artifactId, String version )
300     {
301         return factory.createArtifact( groupId, artifactId, version, null, "jar" );
302     }
303
304     private Artifact createArtifact( String groupId, String artifactId, String version, String type )
305     {
306         return factory.createArtifact( groupId, artifactId, version, null, type );
307     }
308
309     private Artifact createArtifact( String groupId, String artifactId, String version, String type, String classifier )
310     {
311         return factory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier );
312     }
313
314 }