1 package org.apache.maven.artifact.resolver; 2 3 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 ; 27 import java.util.Collections ; 28 import java.util.HashSet ; 29 import java.util.List ; 30 import java.util.Set ; 31 32 38 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 51 { 52 super.setUp(); 53 54 artifactResolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE ); 55 56 projectArtifact = createLocalArtifact( "project", "3.0" ); 57 } 58 59 protected String component() 60 { 61 return "resolver"; 62 } 63 64 public void testResolutionOfASingleArtifactWhereTheArtifactIsPresentInTheLocalRepository() 65 throws Exception 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 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 groupId, String artifactId, String version, String type ) 86 throws Exception 87 { 88 return super.createArtifact( groupId, artifactId, version, type ); 90 } 91 92 public void testTransitiveResolutionWhereAllArtifactsArePresentInTheLocalRepository() 93 throws Exception 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 remoteRepositories ) 103 throws ArtifactMetadataRetrievalException 104 { 105 Set dependencies = new HashSet (); 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 e ) 114 { 115 throw new ArtifactMetadataRetrievalException( e ); 116 } 117 } 118 119 return new ResolutionGroup( artifact, dependencies, remoteRepositories ); 120 } 121 122 public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, 123 List remoteRepositories ) 124 { 125 throw new UnsupportedOperationException ( "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 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 remoteRepositories ) 157 throws ArtifactMetadataRetrievalException 158 { 159 Set dependencies = new HashSet (); 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 e ) 168 { 169 throw new ArtifactMetadataRetrievalException( e ); 170 } 171 } 172 173 return new ResolutionGroup( artifact, dependencies, remoteRepositories ); 174 } 175 176 public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, 177 List remoteRepositories ) 178 { 179 throw new UnsupportedOperationException ( "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 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 216 { 217 Artifact l = createRemoteArtifact( "l", "1.0" ); 218 deleteLocalArtifact( l ); 219 220 List repositories = new ArrayList (); 221 repositories.add( remoteRepository() ); 222 repositories.add( badRemoteRepository() ); 223 224 artifactResolver.resolve( l, repositories, localRepository() ); 225 226 assertLocalArtifactPresent( l ); 227 } 228 229 240 241 } 242 243 | Popular Tags |