KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > artifact > resolver > ArtifactResolverTest


1 package org.apache.maven.artifact.resolver;
2
3 /*
4  * Copyright 2001-2004 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.AbstractArtifactComponentTestCase;
20 import org.apache.maven.artifact.Artifact;
21 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
22 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
23 import org.apache.maven.artifact.metadata.ResolutionGroup;
24 import org.apache.maven.artifact.repository.ArtifactRepository;
25
26 import java.util.ArrayList JavaDoc;
27 import java.util.Collections JavaDoc;
28 import java.util.HashSet JavaDoc;
29 import java.util.List JavaDoc;
30 import java.util.Set JavaDoc;
31
32 // It would be cool if there was a hook that i could use to setup a test environment.
33
// I want to setup a local/remote repositories for testing but i don't want to have
34
// to change them when i change the layout of the repositories. So i want to generate
35
// the structure i want to test by using the artifact handler manager which dictates
36
// the layout used for a particular artifact type.
37

38 /**
39  * @author <a HREF="mailto:jason@maven.org">Jason van Zyl</a>
40  * @version $Id: ArtifactResolverTest.java 307034 2005-10-07 06:44:59Z brett $
41  */

42 public class ArtifactResolverTest
43     extends AbstractArtifactComponentTestCase
44 {
45     private ArtifactResolver artifactResolver;
46
47     private Artifact projectArtifact;
48
49     protected void setUp()
50         throws Exception JavaDoc
51     {
52         super.setUp();
53
54         artifactResolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
55
56         projectArtifact = createLocalArtifact( "project", "3.0" );
57     }
58
59     protected String JavaDoc component()
60     {
61         return "resolver";
62     }
63
64     public void testResolutionOfASingleArtifactWhereTheArtifactIsPresentInTheLocalRepository()
65         throws Exception JavaDoc
66     {
67         Artifact a = createLocalArtifact( "a", "1.0" );
68
69         artifactResolver.resolve( a, remoteRepositories(), localRepository() );
70
71         assertLocalArtifactPresent( a );
72     }
73
74     public void testResolutionOfASingleArtifactWhereTheArtifactIsNotPresentLocallyAndMustBeRetrievedFromTheRemoteRepository()
75         throws Exception JavaDoc
76     {
77         Artifact b = createRemoteArtifact( "b", "1.0" );
78         deleteLocalArtifact( b );
79
80         artifactResolver.resolve( b, remoteRepositories(), localRepository() );
81
82         assertLocalArtifactPresent( b );
83     }
84
85     protected Artifact createArtifact( String JavaDoc groupId, String JavaDoc artifactId, String JavaDoc version, String JavaDoc type )
86         throws Exception JavaDoc
87     {
88         // for the anonymous classes
89
return super.createArtifact( groupId, artifactId, version, type );
90     }
91
92     public void testTransitiveResolutionWhereAllArtifactsArePresentInTheLocalRepository()
93         throws Exception JavaDoc
94     {
95         Artifact g = createLocalArtifact( "g", "1.0" );
96
97         Artifact h = createLocalArtifact( "h", "1.0" );
98
99         ArtifactMetadataSource mds = new ArtifactMetadataSource()
100         {
101             public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository,
102                                              List JavaDoc remoteRepositories )
103                 throws ArtifactMetadataRetrievalException
104             {
105                 Set JavaDoc dependencies = new HashSet JavaDoc();
106
107                 if ( "g".equals( artifact.getArtifactId() ) )
108                 {
109                     try
110                     {
111                         dependencies.add( createArtifact( "org.apache.maven", "h", "1.0", "jar" ) );
112                     }
113                     catch ( Exception JavaDoc e )
114                     {
115                         throw new ArtifactMetadataRetrievalException( e );
116                     }
117                 }
118
119                 return new ResolutionGroup( artifact, dependencies, remoteRepositories );
120             }
121
122             public List JavaDoc retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
123                                                    List JavaDoc remoteRepositories )
124             {
125                 throw new UnsupportedOperationException JavaDoc( "Cannot get available versions in this test case" );
126             }
127         };
128
129         ArtifactResolutionResult result = artifactResolver.resolveTransitively( Collections.singleton( g ),
130                                                                                 projectArtifact, remoteRepositories(),
131                                                                                 localRepository(), mds );
132
133         assertEquals( 2, result.getArtifacts().size() );
134
135         assertTrue( result.getArtifacts().contains( g ) );
136
137         assertTrue( result.getArtifacts().contains( h ) );
138
139         assertLocalArtifactPresent( g );
140
141         assertLocalArtifactPresent( h );
142     }
143
144     public void testTransitiveResolutionWhereAllArtifactsAreNotPresentInTheLocalRepositoryAndMustBeRetrievedFromTheRemoteRepository()
145         throws Exception JavaDoc
146     {
147         Artifact i = createRemoteArtifact( "i", "1.0" );
148         deleteLocalArtifact( i );
149
150         Artifact j = createRemoteArtifact( "j", "1.0" );
151         deleteLocalArtifact( j );
152
153         ArtifactMetadataSource mds = new ArtifactMetadataSource()
154         {
155             public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository,
156                                              List JavaDoc remoteRepositories )
157                 throws ArtifactMetadataRetrievalException
158             {
159                 Set JavaDoc dependencies = new HashSet JavaDoc();
160
161                 if ( "i".equals( artifact.getArtifactId() ) )
162                 {
163                     try
164                     {
165                         dependencies.add( createArtifact( "org.apache.maven", "j", "1.0", "jar" ) );
166                     }
167                     catch ( Exception JavaDoc e )
168                     {
169                         throw new ArtifactMetadataRetrievalException( e );
170                     }
171                 }
172
173                 return new ResolutionGroup( artifact, dependencies, remoteRepositories );
174             }
175
176             public List JavaDoc retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
177                                                    List JavaDoc remoteRepositories )
178             {
179                 throw new UnsupportedOperationException JavaDoc( "Cannot get available versions in this test case" );
180             }
181         };
182
183         ArtifactResolutionResult result = artifactResolver.resolveTransitively( Collections.singleton( i ),
184                                                                                 projectArtifact, remoteRepositories(),
185                                                                                 localRepository(), mds );
186
187         assertEquals( 2, result.getArtifacts().size() );
188
189         assertTrue( result.getArtifacts().contains( i ) );
190
191         assertTrue( result.getArtifacts().contains( j ) );
192
193         assertLocalArtifactPresent( i );
194
195         assertLocalArtifactPresent( j );
196     }
197
198     public void testResolutionFailureWhenArtifactNotPresentInRemoteRepository()
199         throws Exception JavaDoc
200     {
201         Artifact k = createArtifact( "k", "1.0" );
202
203         try
204         {
205             artifactResolver.resolve( k, remoteRepositories(), localRepository() );
206             fail( "Resolution succeeded when it should have failed" );
207         }
208         catch ( ArtifactNotFoundException expected )
209         {
210             assertTrue( true );
211         }
212     }
213
214     public void testResolutionOfAnArtifactWhereOneRemoteRepositoryIsBadButOneIsGood()
215         throws Exception JavaDoc
216     {
217         Artifact l = createRemoteArtifact( "l", "1.0" );
218         deleteLocalArtifact( l );
219
220         List JavaDoc repositories = new ArrayList JavaDoc();
221         repositories.add( remoteRepository() );
222         repositories.add( badRemoteRepository() );
223
224         artifactResolver.resolve( l, repositories, localRepository() );
225
226         assertLocalArtifactPresent( l );
227     }
228
229     /*
230      public void testResolutionOfASingleArtifactWhereTheArtifactIsNotPresentLocallyAndMustBeRetrievedFromTheRemoteRepositoryAndLocalCannotBeCreated()
231      throws Exception
232      {
233      Artifact m = createRemoteArtifact( "m", "1.0" );
234
235      artifactResolver.resolve( m, remoteRepositories(), badLocalRepository() );
236
237      // TODO [failing test case]: throw and handle a more informative exception
238      }
239      */

240
241 }
242
243
Popular Tags