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 );