Author: brett
Date: Thu Apr 27 06:23:43 2006
New Revision: 397538

URL: http://svn.apache.org/viewcvs?rev=397538&view=rev
Log:
[MRELEASE-98] map parent version

Added:
    
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
   (with props)
Modified:
    
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
    
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
    
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java

Modified: 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java?rev=397538&r1=397537&r2=397538&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
 Thu Apr 27 06:23:43 2006
@@ -90,12 +90,12 @@
                 // rewrite DOM as a string to find differences, since text 
outside the root element is not tracked
                 StringWriter w = new StringWriter();
                 Format format = Format.getRawFormat();
-               format.setLineSeparator( System.getProperty( "line.separator" ) 
);
+                format.setLineSeparator( System.getProperty( "line.separator" 
) );
                 XMLOutputter out = new XMLOutputter( format );
-               out.output( document.getRootElement(), w );
+                out.output( document.getRootElement(), w );
 
                 int index = content.indexOf( w.toString() );
-                if ( index > 0 )
+                if ( index >= 0 )
                 {
                     intro = content.substring( 0, index );
                     outtro = content.substring( index + w.toString().length() 
);
@@ -110,7 +110,7 @@
                 throw new ReleaseExecutionException( "Error reading POM: " + 
e.getMessage(), e );
             }
 
-            transformPomToReleaseVersionPom( projectId, 
document.getRootElement(),
+            transformPomToReleaseVersionPom( project, 
document.getRootElement(),
                                              
releaseConfiguration.getReleaseVersions() );
 
             writePom( project.getFile(), releaseConfiguration, document, 
intro, outtro, project.getModelVersion() );
@@ -125,19 +125,33 @@
 
     }
 
-    private void transformPomToReleaseVersionPom( String projectId, Element 
rootElement, Map mappedVersions )
+    private void transformPomToReleaseVersionPom( MavenProject project, 
Element rootElement, Map mappedVersions )
         throws ReleaseExecutionException
     {
         // TODO: what about if version is inherited? shouldn't prompt...
         Element versionElement = rootElement.getChild( "version", 
rootElement.getNamespace() );
-        String version = (String) mappedVersions.get( projectId );
+        String version = (String) mappedVersions.get(
+            ArtifactUtils.versionlessKey( project.getGroupId(), 
project.getArtifactId() ) );
         if ( version == null )
         {
-            throw new ReleaseExecutionException( "Version for '" + projectId + 
"' was not mapped" );
+            throw new ReleaseExecutionException( "Version for '" + 
project.getName() + "' was not mapped" );
         }
         versionElement.setText( version );
 
-        // TODO: rewrite parent
+        if ( project.hasParent() )
+        {
+            Element parentElement = rootElement.getChild( "parent", 
rootElement.getNamespace() );
+            versionElement = parentElement.getChild( "version", 
rootElement.getNamespace() );
+            MavenProject parent = project.getParent();
+            version = (String) mappedVersions.get(
+                ArtifactUtils.versionlessKey( parent.getGroupId(), 
parent.getArtifactId() ) );
+            if ( version == null )
+            {
+                throw new ReleaseExecutionException( "Version for parent '" + 
parent.getName() + "' was not mapped" );
+            }
+            versionElement.setText( version );
+        }
+
         // TODO: rewrite SCM
         // TODO: rewrite dependencies
         // TODO: rewrite dependency management
@@ -377,9 +391,9 @@
             }
 
             Format format = Format.getRawFormat();
-           format.setLineSeparator( System.getProperty( "line.separator" ) );
+            format.setLineSeparator( System.getProperty( "line.separator" ) );
             XMLOutputter out = new XMLOutputter( format );
-           out.output( document.getRootElement(), writer );
+            out.output( document.getRootElement(), writer );
 
             if ( outtro != null )
             {

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java?rev=397538&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
 Thu Apr 27 06:23:43 2006
@@ -0,0 +1,180 @@
+package org.apache.maven.plugins.release.phase;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
+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.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.ProjectSorter;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+/**
+ * Base class for some release tests.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public class AbstractReleaseTestCase
+    extends PlexusTestCase
+{
+    protected MavenProjectBuilder projectBuilder;
+
+    protected ArtifactRepository localRepository;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
+
+        ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( 
ArtifactRepositoryLayout.ROLE, "default" );
+        String localRepoPath = getTestFile( "target/local-repository" 
).getAbsolutePath().replace( '\\', '/' );
+        localRepository = new DefaultArtifactRepository( "local", "file://" + 
localRepoPath, layout );
+    }
+
+    private Map createManagedVersionMap( String projectId, 
DependencyManagement dependencyManagement,
+                                         ArtifactFactory artifactFactory )
+        throws ProjectBuildingException
+    {
+        Map map;
+        if ( dependencyManagement != null && 
dependencyManagement.getDependencies() != null )
+        {
+            map = new HashMap();
+            for ( Iterator i = 
dependencyManagement.getDependencies().iterator(); i.hasNext(); )
+            {
+                Dependency d = (Dependency) i.next();
+
+                try
+                {
+                    VersionRange versionRange = 
VersionRange.createFromVersionSpec( d.getVersion() );
+                    Artifact artifact = 
artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
+                                                                               
   versionRange, d.getType(),
+                                                                               
   d.getClassifier(), d.getScope() );
+                    map.put( d.getManagementKey(), artifact );
+                }
+                catch ( InvalidVersionSpecificationException e )
+                {
+                    throw new ProjectBuildingException( projectId, "Unable to 
parse version '" + d.getVersion() +
+                        "' for dependency '" + d.getManagementKey() + "': " + 
e.getMessage(), e );
+                }
+            }
+        }
+        else
+        {
+            map = Collections.EMPTY_MAP;
+        }
+        return map;
+    }
+
+    protected ReleaseConfiguration createConfigurationFromProjects( String 
path, String subpath )
+        throws Exception
+    {
+        File testFile = getTestFile( "target/test-classes/projects/" + path + 
subpath + "/pom.xml" );
+        Stack projectFiles = new Stack();
+        projectFiles.push( testFile );
+
+        List projects = new ArrayList();
+        while ( !projectFiles.isEmpty() )
+        {
+            File file = (File) projectFiles.pop();
+
+            // Recopy the test resources since they are modified in some tests
+            String filePath = file.getPath();
+            int index = filePath.indexOf( "projects" );
+            filePath = filePath.substring( index );
+
+            FileUtils.copyFile( getTestFile( "src/test/resources/" + filePath 
),
+                                getTestFile( "target/test-classes/" + filePath 
) );
+
+            MavenProject project = projectBuilder.build( file, 
localRepository, null );
+
+            for ( Iterator i = project.getModules().iterator(); i.hasNext(); )
+            {
+                String module = (String) i.next();
+
+                projectFiles.push( new File( file.getParentFile(), module + 
"/pom.xml" ) );
+            }
+
+            projects.add( project );
+        }
+
+        List repos = Collections.singletonList( new DefaultArtifactRepository( 
"central", getTestFile(
+            "src/test/remote-repository" ).toURL().toExternalForm(), new 
DefaultRepositoryLayout() ) );
+
+        ProjectSorter sorter = new ProjectSorter( projects );
+
+        projects = sorter.getSortedProjects();
+
+        ArtifactFactory artifactFactory = (ArtifactFactory) lookup( 
ArtifactFactory.ROLE );
+        ArtifactCollector artifactCollector = (ArtifactCollector) lookup( 
ArtifactCollector.class.getName() );
+        ArtifactMetadataSource artifactMetadataSource = 
(ArtifactMetadataSource) lookup( ArtifactMetadataSource.ROLE );
+
+        // pass back over and resolve dependencies - can't be done earlier as 
the order may not be correct
+        for ( Iterator i = projects.iterator(); i.hasNext(); )
+        {
+            MavenProject project = (MavenProject) i.next();
+
+            project.setRemoteArtifactRepositories( repos );
+            project.setPluginArtifactRepositories( repos );
+
+            Artifact projectArtifact = project.getArtifact();
+
+            Map managedVersions = createManagedVersionMap(
+                ArtifactUtils.versionlessKey( projectArtifact.getGroupId(), 
projectArtifact.getArtifactId() ),
+                project.getDependencyManagement(), artifactFactory );
+
+            project.setDependencyArtifacts( project.createArtifacts( 
artifactFactory, null, null ) );
+
+            ArtifactResolutionResult result = artifactCollector.collect( 
project.getDependencyArtifacts(),
+                                                                         
projectArtifact, managedVersions,
+                                                                         
localRepository, repos, artifactMetadataSource,
+                                                                         null, 
Collections.EMPTY_LIST );
+
+            project.setArtifacts( result.getArtifacts() );
+        }
+
+        ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
+        releaseConfiguration.setReactorProjects( projects );
+
+        return releaseConfiguration;
+    }
+}

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java?rev=397538&r1=397537&r2=397538&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
 Thu Apr 27 06:23:43 2006
@@ -16,36 +16,8 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.ArtifactUtils;
-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.repository.layout.DefaultRepositoryLayout;
-import org.apache.maven.artifact.resolver.ArtifactCollector;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.plugins.release.ReleaseExecutionException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.ProjectSorter;
-import org.codehaus.plexus.PlexusTestCase;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
 
 /**
  * Test the dependency snapshot check phase.
@@ -53,26 +25,16 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
  */
 public class CheckDependencySnapshotsPhaseTest
-    extends PlexusTestCase
+    extends AbstractReleaseTestCase
 {
     private ReleasePhase phase;
 
-    private MavenProjectBuilder projectBuilder;
-
-    private ArtifactRepository localRepository;
-
     protected void setUp()
         throws Exception
     {
         super.setUp();
 
         phase = (ReleasePhase) lookup( ReleasePhase.ROLE, 
"check-dependency-snapshots" );
-
-        projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
-
-        ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( 
ArtifactRepositoryLayout.ROLE, "default" );
-        String localRepoPath = getTestFile( "target/local-repository" 
).getAbsolutePath().replace( '\\', '/' );
-        localRepository = new DefaultArtifactRepository( "local", "file://" + 
localRepoPath, layout );
     }
 
     public void testNoSnapshotDependencies()
@@ -563,102 +525,10 @@
         assertTrue( true );
     }
 
-    private Map createManagedVersionMap( String projectId, 
DependencyManagement dependencyManagement,
-                                         ArtifactFactory artifactFactory )
-        throws ProjectBuildingException
-    {
-        Map map;
-        if ( dependencyManagement != null && 
dependencyManagement.getDependencies() != null )
-        {
-            map = new HashMap();
-            for ( Iterator i = 
dependencyManagement.getDependencies().iterator(); i.hasNext(); )
-            {
-                Dependency d = (Dependency) i.next();
-
-                try
-                {
-                    VersionRange versionRange = 
VersionRange.createFromVersionSpec( d.getVersion() );
-                    Artifact artifact = 
artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
-                                                                               
   versionRange, d.getType(),
-                                                                               
   d.getClassifier(), d.getScope() );
-                    map.put( d.getManagementKey(), artifact );
-                }
-                catch ( InvalidVersionSpecificationException e )
-                {
-                    throw new ProjectBuildingException( projectId, "Unable to 
parse version '" + d.getVersion() +
-                        "' for dependency '" + d.getManagementKey() + "': " + 
e.getMessage(), e );
-                }
-            }
-        }
-        else
-        {
-            map = Collections.EMPTY_MAP;
-        }
-        return map;
-    }
-
     private ReleaseConfiguration createConfigurationFromProjects( String path )
         throws Exception
     {
-        Stack projectFiles = new Stack();
-        projectFiles.push( getTestFile( 
"target/test-classes/projects/check-dependencies/" + path + "/pom.xml" ) );
-
-        List projects = new ArrayList();
-        while ( !projectFiles.isEmpty() )
-        {
-            File file = (File) projectFiles.pop();
-
-            MavenProject project = projectBuilder.build( file, 
localRepository, null );
-
-            for ( Iterator i = project.getModules().iterator(); i.hasNext(); )
-            {
-                String module = (String) i.next();
-
-                projectFiles.push( new File( file.getParentFile(), module + 
"/pom.xml" ) );
-            }
-
-            projects.add( project );
-        }
-
-        List repos = Collections.singletonList( new DefaultArtifactRepository( 
"central", getTestFile(
-            "src/test/remote-repository" ).toURL().toExternalForm(), new 
DefaultRepositoryLayout() ) );
-
-        ProjectSorter sorter = new ProjectSorter( projects );
-
-        projects = sorter.getSortedProjects();
-
-        ArtifactFactory artifactFactory = (ArtifactFactory) lookup( 
ArtifactFactory.ROLE );
-        ArtifactCollector artifactCollector = (ArtifactCollector) lookup( 
ArtifactCollector.class.getName() );
-        ArtifactMetadataSource artifactMetadataSource = 
(ArtifactMetadataSource) lookup( ArtifactMetadataSource.ROLE );
-
-        // pass back over and resolve dependencies - can't be done earlier as 
the order may not be correct
-        for ( Iterator i = projects.iterator(); i.hasNext(); )
-        {
-            MavenProject project = (MavenProject) i.next();
-
-            project.setRemoteArtifactRepositories( repos );
-            project.setPluginArtifactRepositories( repos );
-
-            Artifact projectArtifact = project.getArtifact();
-
-            Map managedVersions = createManagedVersionMap(
-                ArtifactUtils.versionlessKey( projectArtifact.getGroupId(), 
projectArtifact.getArtifactId() ),
-                project.getDependencyManagement(), artifactFactory );
-
-            project.setDependencyArtifacts( project.createArtifacts( 
artifactFactory, null, null ) );
-
-            ArtifactResolutionResult result = artifactCollector.collect( 
project.getDependencyArtifacts(),
-                                                                         
projectArtifact, managedVersions,
-                                                                         
localRepository, repos, artifactMetadataSource,
-                                                                         null, 
Collections.EMPTY_LIST );
-
-            project.setArtifacts( result.getArtifacts() );
-        }
-
-        ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
-        releaseConfiguration.setReactorProjects( projects );
-
-        return releaseConfiguration;
+        return createConfigurationFromProjects( "check-dependencies/", path );
     }
 
 }

Modified: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java?rev=397538&r1=397537&r2=397538&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
 Thu Apr 27 06:23:43 2006
@@ -4,9 +4,6 @@
  * Copyright 2005-2006 The Apache Software Foundation.  Licensed under the 
Apache License, Version 2.0 (the "License"); you may not use this file except 
in compliance with the License. You may obtain a copy of the License at       
http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law 
or agreed to in writing, software distributed under the License is distributed 
on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied. See the License for the specific language governing 
permissions and limitations under the License.
  */
 
-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.plugins.release.ReleaseExecutionException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
 import org.apache.maven.plugins.release.scm.DefaultScmRepositoryConfigurator;
@@ -14,8 +11,6 @@
 import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.command.edit.EditScmResult;
 import org.apache.maven.scm.manager.NoSuchScmProviderException;
@@ -24,7 +19,6 @@
 import org.apache.maven.scm.provider.ScmProvider;
 import org.apache.maven.scm.provider.ScmProviderStub;
 import org.apache.maven.scm.repository.ScmRepositoryException;
-import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.jmock.cglib.Mock;
 import org.jmock.core.constraint.IsEqual;
@@ -33,7 +27,7 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -42,70 +36,60 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
  */
 public class RewritePomsForReleasePhaseTest
-    extends PlexusTestCase
+    extends AbstractReleaseTestCase
 {
     private ReleasePhase phase;
 
-    private MavenProjectBuilder projectBuilder;
-
-    private ArtifactRepository localRepository;
-
     protected void setUp()
         throws Exception
     {
         super.setUp();
 
         phase = (ReleasePhase) lookup( ReleasePhase.ROLE, 
"rewrite-poms-for-release" );
+    }
+
+    public void testRewriteBasicPom()
+        throws Exception
+    {
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
-        projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
+        phase.execute( config );
 
-        ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( 
ArtifactRepositoryLayout.ROLE, "default" );
-        String localRepoPath = getTestFile( "target/local-repository" 
).getAbsolutePath().replace( '\\', '/' );
-        localRepository = new DefaultArtifactRepository( "local", "file://" + 
localRepoPath, layout );
+        assertTrue( compareFiles( config.getReactorProjects() ) );
     }
 
-    public void testRewriteBasicPom()
-        throws ReleaseExecutionException, ProjectBuildingException, IOException
+    public void testRewritePomWithParent()
+        throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"pom-with-parent" );
 
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        config.mapReleaseVersion( "groupId:subproject1", "2.0" );
 
         phase.execute( config );
 
-        String expected = readTestProjectFile( "basic-pom/expected-pom.xml" );
-        String actual = readTestProjectFile( "basic-pom/pom.xml" );
-        assertEquals( "Check the transformed POM", expected, actual );
+        assertTrue( compareFiles( config.getReactorProjects() ) );
     }
 
     public void testRewriteBasicPomWithEditMode()
         throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
         config.setUseEditMode( true );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
         phase.execute( config );
 
-        String expected = readTestProjectFile( "basic-pom/expected-pom.xml" );
-        String actual = readTestProjectFile( "basic-pom/pom.xml" );
-        assertEquals( "Check the transformed POM", expected, actual );
+        assertTrue( compareFiles( config.getReactorProjects() ) );
     }
 
     public void testRewriteBasicPomWithEditModeFailure()
         throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
         config.setUseEditMode( true );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
         ScmManager scmManager = (ScmManager) lookup( ScmManager.ROLE );
         ScmProviderStub providerStub = (ScmProviderStub) 
scmManager.getProviderByUrl( config.getUrl() );
@@ -127,12 +111,9 @@
     public void testRewriteBasicPomWithEditModeException()
         throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
         config.setUseEditMode( true );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         scmProviderMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"edit" ).will(
@@ -154,12 +135,10 @@
     }
 
     public void testRewriteAddSchema()
-        throws ReleaseExecutionException, ProjectBuildingException, IOException
+        throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
         config.setAddSchema( true );
 
         // Run a second time to check they are not duplicated
@@ -174,12 +153,9 @@
     }
 
     public void testRewriteUnmappedPom()
-        throws ReleaseExecutionException, ProjectBuildingException, IOException
+        throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
 
         try
         {
@@ -196,12 +172,9 @@
     public void testRewriteBasicPomWithScmRepoException()
         throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
         config.setUseEditMode( true );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
         Mock scmManagerMock = new Mock( ScmManager.class );
         scmManagerMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"makeScmRepository" ).with(
@@ -227,12 +200,9 @@
     public void testRewriteBasicPomWithNoSuchProviderException()
         throws Exception
     {
-        File testFile = getCopiedTestFile( "basic-pom/pom.xml" );
-        MavenProject project = projectBuilder.build( testFile, 
localRepository, null );
-
-        ReleaseConfiguration config = createReleaseConfiguration( 
Collections.singletonList( project ) );
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"basic-pom" );
         config.setUseEditMode( true );
-        config.mapReleaseVersion( project.getGroupId() + ":" + 
project.getArtifactId(), "1.0" );
+        config.mapReleaseVersion( "groupId:artifactId", "1.0" );
 
         Mock scmManagerMock = new Mock( ScmManager.class );
         scmManagerMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"makeScmRepository" ).with(
@@ -255,26 +225,33 @@
         }
     }
 
-    private static File getCopiedTestFile( String fileName )
-        throws IOException
-    {
-        File testFile = getTestFile( 
"target/test-classes/projects/rewrite-for-release/" + fileName );
-        FileUtils.copyFile( getTestFile( 
"src/test/resources/projects/rewrite-for-release/" + fileName ), testFile );
-        return testFile;
-    }
-
     private static String readTestProjectFile( String fileName )
         throws IOException
     {
         return FileUtils.fileRead( getTestFile( 
"target/test-classes/projects/rewrite-for-release/" + fileName ) );
     }
 
-    private static ReleaseConfiguration createReleaseConfiguration( List 
reactorProjects )
+    private ReleaseConfiguration createConfigurationFromProjects( String path )
+        throws Exception
     {
-        ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
+        ReleaseConfiguration releaseConfiguration = 
createConfigurationFromProjects( "rewrite-for-release/", path );
         releaseConfiguration.setUrl( "scm:svn:file://localhost/tmp/scm-repo" );
         releaseConfiguration.setWorkingDirectory( getTestFile( 
"target/test/checkout" ) );
-        releaseConfiguration.setReactorProjects( reactorProjects );
+
         return releaseConfiguration;
+    }
+
+    private boolean compareFiles( List reactorProjects )
+        throws IOException
+    {
+        for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+        {
+            MavenProject project = (MavenProject) i.next();
+
+            String actual = FileUtils.fileRead( project.getFile() );
+            String expected = FileUtils.fileRead( new File( 
project.getFile().getParentFile(), "expected-pom.xml" ) );
+            assertEquals( "Check the transformed POM", expected, actual );
+        }
+        return true;
     }
 }

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml?rev=397538&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
 Thu Apr 27 06:23:43 2006
@@ -0,0 +1,27 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>subproject1</module>
+  </modules>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/expected-pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml?rev=397538&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
 Thu Apr 27 06:23:43 2006
@@ -0,0 +1,27 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>subproject1</module>
+  </modules>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml?rev=397538&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
 Thu Apr 27 06:23:43 2006
@@ -0,0 +1,27 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>groupId</groupId>
+    <artifactId>artifactId</artifactId>
+    <version>1.0</version>
+  </parent>
+
+  <artifactId>subproject1</artifactId>
+  <version>2.0</version>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/expected-pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml?rev=397538&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
 Thu Apr 27 06:23:43 2006
@@ -0,0 +1,27 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>groupId</groupId>
+    <artifactId>artifactId</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>subproject1</artifactId>
+  <version>2.0-SNAPSHOT</version>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-parent/subproject1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to