Author: jdcasey Date: Fri Aug 28 00:02:35 2009 New Revision: 808684 URL: http://svn.apache.org/viewvc?rev=808684&view=rev Log: unit tests for the cumulative scope filter, and integration tests for the default project dependencies resolver. Mocking the resolver got pretty ugly, so I'm falling back to ITs for this for now, since they're easy to understand, even if they are a little more prone to underlying problems in dependencies.
Added: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java (with props) maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java (with props) Modified: maven/shared/trunk/maven-artifact-resolver/pom.xml maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java Modified: maven/shared/trunk/maven-artifact-resolver/pom.xml URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/pom.xml?rev=808684&r1=808683&r2=808684&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/pom.xml (original) +++ maven/shared/trunk/maven-artifact-resolver/pom.xml Fri Aug 28 00:02:35 2009 @@ -71,9 +71,32 @@ <artifactId>maven-core</artifactId> <version>2.2.1</version> </dependency> + <dependency> + <groupId>org.easymock</groupId> + <artifactId>easymockclassextension</artifactId> + <version>2.3</version> + <type>jar</type> + <scope>compile</scope> + </dependency> </dependencies> <build> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.4.3</version> + <configuration> + <includes combine.children="append"> + <include>**/*Test.java</include> + </includes> + <excludes> + <exclude>**/testutil/**</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> @@ -99,4 +122,25 @@ </plugin> </plugins> </build> + + <profiles> + <profile> + <id>run-its</id> + <build> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.4.3</version> + <configuration> + <includes combine.children="append"> + <include>**/*IT.java</include> + </includes> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + </profile> + </profiles> </project> Modified: maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java?rev=808684&r1=808683&r2=808684&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java (original) +++ maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java Fri Aug 28 00:02:35 2009 @@ -20,7 +20,6 @@ */ import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter; @@ -69,18 +68,18 @@ */ void addScope( String scope ) { - if ( DefaultArtifact.SCOPE_COMPILE.equals( scope ) ) + if ( Artifact.SCOPE_COMPILE.equals( scope ) ) { systemScope = true; providedScope = true; compileScope = true; } - else if ( DefaultArtifact.SCOPE_RUNTIME.equals( scope ) ) + else if ( Artifact.SCOPE_RUNTIME.equals( scope ) ) { compileScope = true; runtimeScope = true; } - else if ( DefaultArtifact.SCOPE_TEST.equals( scope ) ) + else if ( Artifact.SCOPE_TEST.equals( scope ) ) { systemScope = true; providedScope = true; @@ -88,6 +87,10 @@ runtimeScope = true; testScope = true; } + else if ( Artifact.SCOPE_PROVIDED.equals( scope ) ) + { + providedScope = true; + } } /** Modified: maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java?rev=808684&r1=808683&r2=808684&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java (original) +++ maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java Fri Aug 28 00:02:35 2009 @@ -47,7 +47,7 @@ * @author jdcasey * * @see ProjectDependenciesResolver - * @plexus.component role="org.apache.maven.shared.artifact.resolver.ProjectDependenciesResolver" role-hint="default" + * @plexus.component role="org.apache.maven.ProjectDependenciesResolver" role-hint="default" */ public final class DefaultProjectDependenciesResolver implements ProjectDependenciesResolver @@ -67,6 +67,18 @@ * @plexus.requirement role-hint="maven" */ private ArtifactMetadataSource metadataSource; + + // for plexus instantiation. + public DefaultProjectDependenciesResolver(){} + + // for testing. + DefaultProjectDependenciesResolver( ArtifactResolver resolver, ArtifactFactory artifactFactory, + ArtifactMetadataSource metadataSource ) + { + this.resolver = resolver; + this.artifactFactory = artifactFactory; + this.metadataSource = metadataSource; + } /** * {...@inheritdoc} Modified: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java?rev=808684&r1=808683&r2=808684&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java (original) +++ maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java Fri Aug 28 00:02:35 2009 @@ -19,15 +19,97 @@ * under the License. */ +import static junit.framework.Assert.assertEquals; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.verify; + +import org.apache.maven.artifact.Artifact; import org.junit.Test; public class CumlativeScopeArtifactFilterTest { - + @Test public void testNothingEnabledWhenNoScopesAdded() { - + assertScopeInclusion( false, false, false, false ); + } + + @Test + public void testProvidedOnlyEnabledWhenProvidedScopeOnlyIsAdded() + { + assertScopeInclusion( false, false, false, true, Artifact.SCOPE_PROVIDED ); + } + + @Test + public void testCompileAndProvidedEnabledWhenCompileScopeOnlyIsAdded() + { + assertScopeInclusion( true, false, false, true, Artifact.SCOPE_COMPILE ); + } + + @Test + public void testCompileAndRuntimeEnabledWhenRuntimeScopeOnlyIsAdded() + { + assertScopeInclusion( true, false, true, false, Artifact.SCOPE_RUNTIME ); + } + + @Test + public void testCompileRuntimeProvidedAndTestEnabledWhenTestScopeOnlyIsAdded() + { + assertScopeInclusion( true, true, true, true, Artifact.SCOPE_TEST ); + } + + @Test + public void testCompileRuntimeProvidedAndTestEnabledWhenTestAndCompileScopesAreAdded() + { + assertScopeInclusion( true, true, true, true, Artifact.SCOPE_TEST, Artifact.SCOPE_COMPILE ); + } + + @Test + public void testCompileRuntimeAndProvidedEnabledWhenRuntimeAndCompileScopeAreAdded() + { + assertScopeInclusion( true, false, true, true, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_COMPILE ); } + private void assertScopeInclusion( boolean compileIncluded, boolean testIncluded, boolean runtimeIncluded, + boolean providedIncluded, String...scopes ) + { + CumulativeScopeArtifactFilter filter = new CumulativeScopeArtifactFilter(); + if ( scopes != null && scopes.length > 0 ) + { + for ( String scope : scopes ) + { + filter.addScope( scope ); + } + } + + Artifact compile = createMock( Artifact.class ); + expect( compile.getScope() ).andReturn( Artifact.SCOPE_COMPILE ).anyTimes(); + + Artifact runtime = createMock( Artifact.class ); + expect( runtime.getScope() ).andReturn( Artifact.SCOPE_RUNTIME ).anyTimes(); + + Artifact test = createMock( Artifact.class ); + expect( test.getScope() ).andReturn( Artifact.SCOPE_TEST ).anyTimes(); + + Artifact provided = createMock( Artifact.class ); + expect( provided.getScope() ).andReturn( Artifact.SCOPE_PROVIDED ).anyTimes(); + + replay( compile, runtime, test, provided ); + + assertEquals( "Compile scope should " + ( compileIncluded ? "" : "not " ) + "be included.", compileIncluded, + filter.include( compile ) ); + + assertEquals( "Runtime scope should " + ( runtimeIncluded ? "" : "not " ) + "be included.", runtimeIncluded, + filter.include( runtime ) ); + + assertEquals( "Test scope should " + ( testIncluded ? "" : "not " ) + "be included.", testIncluded, filter.include( test ) ); + + assertEquals( "Provided scope should " + ( providedIncluded ? "" : "not " ) + "be included.", providedIncluded, + filter.include( provided ) ); + + verify( compile, runtime, test, provided ); + } } Added: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java?rev=808684&view=auto ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java (added) +++ maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java Fri Aug 28 00:02:35 2009 @@ -0,0 +1,328 @@ +package org.apache.maven.shared.artifact.resolver; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static junit.framework.Assert.fail; + +import org.apache.maven.ProjectDependenciesResolver; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.metadata.ArtifactMetadataSource; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.DefaultArtifactRepository; +import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; +import org.apache.maven.artifact.resolver.ArtifactNotFoundException; +import org.apache.maven.artifact.resolver.ArtifactResolutionException; +import org.apache.maven.artifact.resolver.ArtifactResolver; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Writer; +import org.apache.maven.project.DefaultProjectBuilderConfiguration; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuilderConfiguration; +import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.settings.Settings; +import org.apache.maven.shared.artifact.resolver.testutil.ModelCreator; +import org.codehaus.plexus.DefaultPlexusContainer; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.PlexusContainerException; +import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; +import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; + + +public class DefaultProjectDependenciesResolverIT +{ + + private static PlexusContainer container; + + private static ArtifactResolver artifactResolver; + + private static ArtifactMetadataSource metadataSource; + + private static ArtifactFactory artifactFactory; + + private static MavenProjectBuilder projectBuilder; + + private static DefaultProjectDependenciesResolver resolver; + + private static MavenSession session; + + private static File localRepoDir; + + private static File pomsDir; + + private static ProjectBuilderConfiguration pbConfig; + + @Test + public void resolveSingleDependency_SingleProject_CompileScope() + throws ArtifactResolutionException, ArtifactNotFoundException, IOException, ProjectBuildingException + { + String gid = "org.codehaus.plexus"; + String aid = "plexus-utils"; + String version = "1.5.15"; + + Model model = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version ).getModel(); + + MavenProject project = writeAndBuild( model, "pom.1dep-1project-compile-scope.xml" ); + + Collection<String> scopes = Collections.singleton( Artifact.SCOPE_COMPILE ); + + Set<Artifact> result = resolver.resolve( project, scopes, session ); + + assertSingleArtifact( result, gid, aid, version ); + } + + @Test + public void resolveUsingDependencyManagementForTransitives_SingleProject_CompileScope() + throws ArtifactResolutionException, ArtifactNotFoundException, IOException, ProjectBuildingException + { + String gid = "org.apache.maven"; + String aid = "maven-project"; + String version = "2.2.1"; + + String maid = "maven-model"; + String mversion = "2.1.0"; + + Model model = new ModelCreator().withDefaultCoordinate() + .withDependency( gid, aid, version ) + .withManagedDependency( gid, maid, mversion ) + .getModel(); + + MavenProject project = writeAndBuild( model, "pom.managed-transitive-dep-1project-compile-scope.xml" ); + + Collection<String> scopes = Collections.singleton( Artifact.SCOPE_COMPILE ); + + Set<Artifact> result = resolver.resolve( project, scopes, session ); + + assertNotNull( result ); + +// System.out.println( "Got: " + result.size() + " results:" ); +// for ( Artifact artifact : result ) +// { +// System.out.println( "\n- " + artifact.getId() ); +// } + + assertArtifactPresent( result, gid, aid, version ); + assertArtifactPresent( result, gid, maid, mversion ); + } + + @Test + public void resolveUsingDependencyManagementIntermittently_TwoProjects_CompileScope_FirstWins() + throws ArtifactResolutionException, ArtifactNotFoundException, IOException, ProjectBuildingException + { + String gid = "org.apache.maven"; + String aid = "maven-project"; + String version = "2.2.1"; + + String maid = "maven-model"; + String mversion = "2.1.0"; + + Model model1 = new ModelCreator().withDefaultCoordinate() + .withDependency( gid, aid, version ) + .withManagedDependency( gid, maid, mversion ) + .getModel(); + + MavenProject project1 = writeAndBuild( model1, "pom.managed-transitive-dep-2proj-compile-scope-A.xml" ); + + Model model2 = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version ).getModel(); + MavenProject project2 = writeAndBuild( model2, "pom.managed-transitive-dep-2proj-compile-scope-B.xml" ); + + Set<MavenProject> projects = new LinkedHashSet<MavenProject>(); + projects.add( project1 ); + projects.add( project2 ); + + Collection<String> scopes = Collections.singleton( Artifact.SCOPE_COMPILE ); + + Set<Artifact> result = resolver.resolve( projects, scopes, session ); + + assertNotNull( result ); + +// System.out.println( "Got: " + result.size() + " results:" ); +// for ( Artifact artifact : result ) +// { +// System.out.println( "\n- " + artifact.getId() ); +// } + + assertArtifactPresent( result, gid, aid, version ); + assertArtifactPresent( result, gid, maid, mversion ); + } + + private void assertArtifactPresent( Set<Artifact> result, String gid, String aid, String version ) + { + for ( Artifact artifact : result ) + { + if ( gid.equals( artifact.getGroupId() ) && aid.equals( artifact.getArtifactId() ) + && version.equals( artifact.getVersion() ) ) + { + return; + } + } + + fail( "Did not find required artifact: " + gid + ":" + aid + ":" + version + " in resolution result." ); + } + + @Test + public void resolveSingleDependency_TwoProjects_CompileScope() + throws ArtifactResolutionException, ArtifactNotFoundException, IOException, ProjectBuildingException + { + String gid = "org.codehaus.plexus"; + String aid = "plexus-utils"; + String version = "1.5.15"; + + Model model1 = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version ).getModel(); + MavenProject project1 = writeAndBuild( model1, "pom.1dep-2proj-compile-scope-A.xml" ); + + Model model2 = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version ).getModel(); + MavenProject project2 = writeAndBuild( model2, "pom.1dep-2proj-compile-scope-B.xml" ); + + Set<MavenProject> projects = new LinkedHashSet<MavenProject>(); + projects.add( project1 ); + projects.add( project2 ); + + Collection<String> scopes = Collections.singleton( Artifact.SCOPE_COMPILE ); + + Set<Artifact> result = resolver.resolve( projects, scopes, session ); + + assertSingleArtifact( result, gid, aid, version ); + } + + @Test + public void resolveSingleDependency_TwoVersions_TwoProjects_CompileScope_FirstWins() + throws ArtifactResolutionException, ArtifactNotFoundException, IOException, ProjectBuildingException + { + String gid = "org.codehaus.plexus"; + String aid = "plexus-utils"; + String version = "1.5.15"; + + Model model1 = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version ).getModel(); + MavenProject project1 = writeAndBuild( model1, "pom.1dep-2proj-compile-scope-A.xml" ); + + String version2 = "1.5.14"; + + Model model2 = new ModelCreator().withDefaultCoordinate().withDependency( gid, aid, version2 ).getModel(); + MavenProject project2 = writeAndBuild( model2, "pom.1dep-2proj-compile-scope-B.xml" ); + + Set<MavenProject> projects = new LinkedHashSet<MavenProject>(); + projects.add( project1 ); + projects.add( project2 ); + + Collection<String> scopes = Collections.singleton( Artifact.SCOPE_COMPILE ); + + Set<Artifact> result = resolver.resolve( projects, scopes, session ); + + assertSingleArtifact( result, gid, aid, version ); + } + + private void assertSingleArtifact( Set<Artifact> result, String gid, String aid, String version ) + { + assertNotNull( result ); + assertEquals( 1, result.size() ); + + Artifact a = result.iterator().next(); + assertEquals( gid, a.getGroupId() ); + assertEquals( aid, a.getArtifactId() ); + assertEquals( version, a.getVersion() ); + + assertTrue( a.isResolved() ); + assertTrue( a.getFile().exists() ); + } + + private MavenProject writeAndBuild( Model model, String filename ) + throws IOException, ProjectBuildingException + { + File pomFile = new File( pomsDir, filename ); + + FileWriter writer = null; + try + { + writer = new FileWriter( pomFile ); + new MavenXpp3Writer().write( writer, model ); + } + finally + { + IOUtil.close( writer ); + } + + return projectBuilder.build( pomFile, pbConfig ); + } + + @BeforeClass + public static void bootstrap() + throws PlexusContainerException, ComponentLookupException, IOException + { + container = new DefaultPlexusContainer(); + container.initialize(); + container.start(); + + artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.class.getName() ); + metadataSource = (ArtifactMetadataSource) container.lookup( ArtifactMetadataSource.class.getName(), "maven" ); + artifactFactory = (ArtifactFactory) container.lookup( ArtifactFactory.class.getName() ); + projectBuilder = (MavenProjectBuilder) container.lookup( MavenProjectBuilder.class.getName() ); + + resolver = (DefaultProjectDependenciesResolver) container.lookup( ProjectDependenciesResolver.class.getName(), "default" ); + + localRepoDir = newTempDir( "local-repo" ); + pomsDir = newTempDir( "poms" ); + + ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.class.getName(), "default" ); + + ArtifactRepository localRepo = new DefaultArtifactRepository( "local", localRepoDir.getAbsolutePath(), layout ); + + session = new MavenSession( container, new Settings(), localRepo, null, null, null, null, null, null ); + + pbConfig = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepo ); + } + + private static File newTempDir( String basename ) + throws IOException + { + File dir = File.createTempFile( basename + ".", ".dir" ); + dir.delete(); + dir.mkdirs(); + + return dir; + } + + @AfterClass + public static void shutdown() + { + try + { + container.release( resolver ); + container.release( artifactResolver ); + container.release( metadataSource ); + container.release( artifactFactory ); + container.release( projectBuilder ); + + container.dispose(); + } + catch ( ComponentLifecycleException e ) + { + } + + try + { + FileUtils.forceDelete( localRepoDir ); + FileUtils.forceDelete( pomsDir ); + } + catch ( IOException e ) + { + } + } + +} Propchange: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolverIT.java ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java?rev=808684&view=auto ============================================================================== --- maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java (added) +++ maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java Fri Aug 28 00:02:35 2009 @@ -0,0 +1,65 @@ +package org.apache.maven.shared.artifact.resolver.testutil; + +import org.apache.maven.model.Dependency; +import org.apache.maven.model.DependencyManagement; +import org.apache.maven.model.Model; + +public class ModelCreator +{ + + private Model model; + + public ModelCreator() + { + model = new Model(); + model.setModelVersion( "4.0.0" ); + } + + public ModelCreator withCoordinate( String groupId, String artifactId, String version ) + { + model.setGroupId( groupId ); + model.setArtifactId( artifactId ); + model.setVersion( version ); + return this; + } + + public ModelCreator withDependency( String groupId, String artifactId, String version ) + { + Dependency dep = new Dependency(); + dep.setGroupId( groupId ); + dep.setArtifactId( artifactId ); + dep.setVersion( version ); + + model.addDependency( dep ); + return this; + } + + public Model getModel() + { + return model; + } + + public ModelCreator withDefaultCoordinate() + { + return withCoordinate( "group.id", "artifact-id", "1" ); + } + + public ModelCreator withManagedDependency( String groupId, String artifactId, String version ) + { + DependencyManagement dm = model.getDependencyManagement(); + if ( dm == null ) + { + dm = new DependencyManagement(); + model.setDependencyManagement( dm ); + } + + Dependency dep = new Dependency(); + dep.setGroupId( groupId ); + dep.setArtifactId( artifactId ); + dep.setVersion( version ); + + dm.addDependency( dep ); + + return this; + } +} Propchange: maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/testutil/ModelCreator.java ------------------------------------------------------------------------------ svn:eol-style = native