You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/10/09 20:41:43 UTC
svn commit: r583258 - in /maven/components/trunk/maven-project/src:
main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java
Author: jdcasey
Date: Tue Oct 9 11:41:42 2007
New Revision: 583258
URL: http://svn.apache.org/viewvc?rev=583258&view=rev
Log:
unit test for parent POMs in repositories brought in by profiles from outside the pom.xml.
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java?rev=583258&r1=583257&r2=583258&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java Tue Oct 9 11:41:42 2007
@@ -277,13 +277,9 @@
LinkedHashSet profileRepos = profileAdvisor.getArtifactRepositoriesFromActiveProfiles( profileManager, model.getId() );
- getLogger().debug( "Got the following repos from global profile manager:\n\n" + profileRepos );
-
profileRepos.addAll( profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model, projectDir,
explicitlyActive,
explicitlyInactive ) );
-
- getLogger().debug( "Got the following repos from all profile managers:\n\n" + profileRepos );
if ( !profileRepos.isEmpty() )
{
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java?rev=583258&r1=583257&r2=583258&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java Tue Oct 9 11:41:42 2007
@@ -25,7 +25,11 @@
import org.apache.maven.context.BuildContextManager;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
+import org.apache.maven.model.Profile;
+import org.apache.maven.model.Repository;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.build.ProjectBuildCache;
import org.codehaus.plexus.PlexusTestCase;
@@ -37,7 +41,9 @@
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
+import java.util.Set;
public class DefaultModelLineageBuilderTest
extends PlexusTestCase
@@ -47,13 +53,16 @@
private ArtifactRepositoryLayout defaultLayout;
+ private Set toDelete = new HashSet();
+
public void setUp()
throws Exception
{
super.setUp();
getContainer().getLoggerManager().setThresholds( Logger.LEVEL_DEBUG );
- modelLineageBuilder = (DefaultModelLineageBuilder) lookup( ModelLineageBuilder.ROLE,
+ modelLineageBuilder = (DefaultModelLineageBuilder) lookup(
+ ModelLineageBuilder.ROLE,
DefaultModelLineageBuilder.ROLE_HINT );
defaultLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
@@ -66,6 +75,16 @@
ctxMgr.clearBuildContext();
super.tearDown();
+
+ for ( Iterator it = toDelete.iterator(); it.hasNext(); )
+ {
+ File f = (File) it.next();
+
+ if ( f.exists() )
+ {
+ FileUtils.forceDelete( f );
+ }
+ }
}
public void testShouldReadSinglePomWithNoParents()
@@ -96,7 +115,8 @@
IOUtil.close( writer );
}
- ModelLineage lineage = modelLineageBuilder.buildModelLineage( pomFile, null, null, null, false );
+ ModelLineage lineage = modelLineageBuilder.buildModelLineage( pomFile, null, null, null,
+ false );
assertEquals( 1, lineage.size() );
@@ -107,7 +127,9 @@
throws IOException, ProjectBuildingException
{
// 1. create local repository directory
- File localRepoDirectory = File.createTempFile( "DefaultModelLineageBuilder.localRepository.", "" );
+ File localRepoDirectory = File.createTempFile(
+ "DefaultModelLineageBuilder.localRepository.",
+ "" );
localRepoDirectory.delete();
localRepoDirectory.mkdirs();
@@ -152,11 +174,13 @@
// 7. build the lineage.
ArtifactRepository localRepository = new DefaultArtifactRepository(
"local",
- localRepoDirectory.toURL().toExternalForm(),
+ localRepoDirectory.toURL()
+ .toExternalForm(),
defaultLayout );
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
- Collections.EMPTY_LIST, null, false );
+ Collections.EMPTY_LIST, null,
+ false );
assertEquals( 3, lineage.size() );
@@ -171,7 +195,9 @@
throws IOException, ProjectBuildingException
{
// 1. create local repository directory
- File localRepoDirectory = File.createTempFile( "DefaultModelLineageBuilder.localRepository.", "" );
+ File localRepoDirectory = File.createTempFile(
+ "DefaultModelLineageBuilder.localRepository.",
+ "" );
localRepoDirectory.delete();
localRepoDirectory.mkdirs();
@@ -197,11 +223,13 @@
// 7. build the lineage.
ArtifactRepository localRepository = new DefaultArtifactRepository(
"local",
- localRepoDirectory.toURL().toExternalForm(),
+ localRepoDirectory.toURL()
+ .toExternalForm(),
defaultLayout );
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
- Collections.EMPTY_LIST, null, true );
+ Collections.EMPTY_LIST, null,
+ true );
assertEquals( 2, lineage.size() );
@@ -219,14 +247,18 @@
throws IOException, ProjectBuildingException
{
// 1. create local and remote repository directories
- File localRepoDirectory = File.createTempFile( "DefaultModelLineageBuilder.localRepository.", "" );
+ File localRepoDirectory = File.createTempFile(
+ "DefaultModelLineageBuilder.localRepository.",
+ "" );
localRepoDirectory.delete();
localRepoDirectory.mkdirs();
deleteDirOnExit( localRepoDirectory );
- File remoteRepoDirectory = File.createTempFile( "DefaultModelLineageBuilder.remoteRepository.", "" );
+ File remoteRepoDirectory = File.createTempFile(
+ "DefaultModelLineageBuilder.remoteRepository.",
+ "" );
remoteRepoDirectory.delete();
remoteRepoDirectory.mkdirs();
@@ -271,15 +303,19 @@
// 7. build the lineage.
ArtifactRepository localRepository = new DefaultArtifactRepository(
"local",
- localRepoDirectory.toURL().toExternalForm(),
+ localRepoDirectory.toURL()
+ .toExternalForm(),
defaultLayout );
- ArtifactRepository remoteRepository = new DefaultArtifactRepository( "test",
+ ArtifactRepository remoteRepository = new DefaultArtifactRepository(
+ "test",
remoteRepoDirectory.toURL()
.toExternalForm(),
defaultLayout );
- ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
+ ModelLineage lineage = modelLineageBuilder.buildModelLineage(
+ currentPOM,
+ localRepository,
Collections.singletonList( remoteRepository ),
null, false );
@@ -296,7 +332,9 @@
throws IOException, ProjectBuildingException
{
// 1. create project-root directory.
- File projectRootDirectory = File.createTempFile( "DefaultModelLineageBuilder.projectRootDir.", "" );
+ File projectRootDirectory = File.createTempFile(
+ "DefaultModelLineageBuilder.projectRootDir.",
+ "" );
projectRootDirectory.delete();
projectRootDirectory.mkdirs();
@@ -332,13 +370,15 @@
writeModel( current, currentPOM );
// 7. build the lineage.
- ArtifactRepository localRepository = new DefaultArtifactRepository( "local",
+ ArtifactRepository localRepository = new DefaultArtifactRepository(
+ "local",
projectRootDirectory.toURL()
.toExternalForm(),
defaultLayout );
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
- Collections.EMPTY_LIST, null, false );
+ Collections.EMPTY_LIST, null,
+ false );
assertEquals( 2, lineage.size() );
@@ -348,25 +388,91 @@
assertEquals( parent.getId(), ( (Model) modelIterator.next() ).getId() );
}
- private void deleteDirOnExit( final File localRepoDirectory )
+ public void testReadPOMWithParentInRepoBroughtInViaSettingsProfile()
+ throws IOException, ProjectBuildingException
{
- Runtime.getRuntime().addShutdownHook( new Thread( new Runnable()
- {
- public void run()
- {
- try
- {
- FileUtils.deleteDirectory( localRepoDirectory );
- }
- catch ( IOException e )
- {
- // ignore this.
- }
- }
- } ) );
+ // 1. create project-root directory.
+ File projectRootDirectory = createTempDir( "projectRootDir" );
+
+ // 1. create project-root directory.
+ File repoRootDirectory = createTempDir( "repoRootDir" );
+
+ File localRepoRootDirectory = createTempDir( "localRepoRootDir" );
+
+ // 2. create dir for parent POM within project root directory.
+ File parentDir = new File( repoRootDirectory, "group/parent/1" );
+ parentDir.mkdirs();
+
+ // 3. create the parent model in the parent-POM directory
+ Model parent = createModel( "group", "parent", "1" );
+
+ writeModel( parent, new File( parentDir, "parent-1.pom" ) );
+
+ // 5. create the current pom with a parent-ref on the parent model
+ Model current = createModel( "group", "child", "1" );
+
+ Parent currentParent = new Parent();
+ currentParent.setGroupId( "group" );
+ currentParent.setArtifactId( "parent" );
+ currentParent.setVersion( "1" );
+
+ current.setParent( currentParent );
+
+ // 6. write the current POM to the child directory
+ File currentPOM = new File( projectRootDirectory, "pom.xml" );
+ writeModel( current, currentPOM );
+
+ // 7. build the lineage.
+ ArtifactRepository localRepository = new DefaultArtifactRepository(
+ "local",
+ localRepoRootDirectory.toURL()
+ .toExternalForm(),
+ defaultLayout );
+
+ Profile profile = new Profile();
+ profile.setId( "external" );
+
+ Repository repository = new Repository();
+ repository.setId( "temp" );
+ repository.setUrl( repoRootDirectory.toURL().toExternalForm() );
+
+ profile.addRepository( repository );
+
+ ProfileManager profileManager = new DefaultProfileManager( getContainer() );
+ profileManager.addProfile( profile );
+ profileManager.explicitlyActivate( profile.getId() );
+
+ ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
+ Collections.EMPTY_LIST, profileManager,
+ false );
+
+ assertEquals( 2, lineage.size() );
+
+ Iterator modelIterator = lineage.modelIterator();
+
+ assertEquals( current.getId(), ( (Model) modelIterator.next() ).getId() );
+ assertEquals( parent.getId(), ( (Model) modelIterator.next() ).getId() );
+ }
+
+ private File createTempDir( String basename )
+ throws IOException
+ {
+ File dir = File.createTempFile( "DefaultModelLineageBuilder." + basename + ".", "" );
+
+ dir.delete();
+ dir.mkdirs();
+
+ deleteDirOnExit( dir );
+ return dir;
+ }
+
+ private void deleteDirOnExit( File f )
+ {
+ toDelete.add( f );
}
- private void writeModel( Model model, File file )
+ private void writeModel( Model model,
+ File file )
throws IOException
{
FileWriter writer = null;
@@ -384,7 +490,8 @@
IOUtil.close( writer );
}
- System.out.println( "Verifying that: " + file.getAbsolutePath() + " exists: " + file.exists() );
+ System.out.println( "Verifying that: " + file.getAbsolutePath() + " exists: "
+ + file.exists() );
}
public void testReadPOMWithParentInOtherLocalFileWithBadRelativePath()
@@ -399,7 +506,9 @@
// 4. write the parent model to the local repo directory
writeModel( parent, parentPOM );
- BuildContextManager buildContextManager = (BuildContextManager) lookup( BuildContextManager.ROLE, "default" );
+ BuildContextManager buildContextManager = (BuildContextManager) lookup(
+ BuildContextManager.ROLE,
+ "default" );
ProjectBuildCache cache = ProjectBuildCache.read( buildContextManager );
cache.cacheModelFileForModel( parentPOM, parent );
@@ -423,7 +532,8 @@
writeModel( current, currentPOM );
// 7. build the lineage.
- ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, null, Collections.EMPTY_LIST, null,
+ ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, null,
+ Collections.EMPTY_LIST, null,
false );
assertEquals( 2, lineage.size() );
@@ -434,7 +544,9 @@
assertEquals( parent.getId(), ( (Model) modelIterator.next() ).getId() );
}
- private Model createModel( String groupId, String artifactId, String version )
+ private Model createModel( String groupId,
+ String artifactId,
+ String version )
{
Model model = new Model();
model.setGroupId( groupId );