Author: brett
Date: Tue May  2 01:41:37 2006
New Revision: 398862

URL: http://svn.apache.org/viewcvs?rev=398862&view=rev
Log:
[MRELEASE-98] test multiple projects in commit phase

Added:
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
   (with props)
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
   (with props)
Modified:
    
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/ScmCommitPhaseTest.java
    
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/single-pom/pom.xml

Modified: 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/ScmCommitPhaseTest.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/ScmCommitPhaseTest.java?rev=398862&r1=398861&r2=398862&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/ScmCommitPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/ScmCommitPhaseTest.java
 Tue May  2 01:41:37 2006
@@ -37,25 +37,30 @@
 import org.jmock.core.constraint.IsAnything;
 import org.jmock.core.constraint.IsEqual;
 import org.jmock.core.constraint.IsNull;
-import org.jmock.core.matcher.InvokeAtLeastOnceMatcher;
+import org.jmock.core.matcher.InvokeOnceMatcher;
 import org.jmock.core.matcher.TestFailureMatcher;
 import org.jmock.core.stub.ReturnStub;
 import org.jmock.core.stub.ThrowStub;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * Test the SCM commit phase.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
- * @todo [!] multiple projects
  */
 public class ScmCommitPhaseTest
     extends AbstractReleaseTestCase
 {
     private static final String PREFIX = "[maven-release-plugin] prepare 
release ";
 
+    private static final File[] EMPTY_FILE_ARRAY = new File[0];
+
     protected void setUp()
         throws Exception
     {
@@ -78,7 +83,39 @@
         Mock scmProviderMock = new Mock( ScmProvider.class );
         Constraint[] arguments = new Constraint[]{new IsAnything(), new 
IsScmFileSetEquals( fileSet ), new IsNull(),
             new IsEqual( PREFIX + "release-label" )};
-        scmProviderMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"checkIn" ).with( arguments ).will(
+        scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkIn" 
).with( arguments ).will(
+            new ReturnStub( new CheckInScmResult( "...", 
Collections.singletonList( rootProject.getFile() ) ) ) );
+
+        ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+
+        phase.execute( config );
+
+        assertTrue( true );
+    }
+
+    public void testCommitMultiModule()
+        throws Exception
+    {
+        ReleaseConfiguration config = createConfigurationFromProjects( 
"scm-commit/", "multiple-poms", true );
+        config.setUrl( "scm-url" );
+        MavenProject rootProject = (MavenProject) 
config.getReactorProjects().get( 0 );
+        config.setWorkingDirectory( rootProject.getFile().getParentFile() );
+        config.setReleaseLabel( "release-label" );
+
+        List poms = new ArrayList();
+        for ( Iterator i = config.getReactorProjects().iterator(); 
i.hasNext(); )
+        {
+            MavenProject project = (MavenProject) i.next();
+            poms.add( project.getFile() );
+        }
+        ScmFileSet fileSet =
+            new ScmFileSet( rootProject.getFile().getParentFile(), (File[]) 
poms.toArray( EMPTY_FILE_ARRAY ) );
+
+        Mock scmProviderMock = new Mock( ScmProvider.class );
+        Constraint[] arguments = new Constraint[]{new IsAnything(), new 
IsScmFileSetEquals( fileSet ), new IsNull(),
+            new IsEqual( PREFIX + "release-label" )};
+        scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkIn" 
).with( arguments ).will(
             new ReturnStub( new CheckInScmResult( "...", 
Collections.singletonList( rootProject.getFile() ) ) ) );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
@@ -105,7 +142,7 @@
         Mock scmProviderMock = new Mock( ScmProvider.class );
         Constraint[] arguments = new Constraint[]{new IsAnything(), new 
IsScmFileSetEquals( fileSet ), new IsNull(),
             new IsEqual( "[maven-release-plugin] prepare for next development 
iteration" )};
-        scmProviderMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"checkIn" ).with( arguments ).will(
+        scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkIn" 
).with( arguments ).will(
             new ReturnStub( new CheckInScmResult( "...", 
Collections.singletonList( rootProject.getFile() ) ) ) );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
@@ -174,7 +211,7 @@
         ReleaseConfiguration releaseConfiguration = 
createReleaseConfiguration();
 
         Mock scmManagerMock = new Mock( ScmManager.class );
-        scmManagerMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"makeScmRepository" ).with(
+        scmManagerMock.expects( new InvokeOnceMatcher() ).method( 
"makeScmRepository" ).with(
             new IsEqual( "scm-url" ) ).will( new ThrowStub( new 
NoSuchScmProviderException( "..." ) ) );
 
         ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
@@ -200,7 +237,7 @@
         ReleaseConfiguration releaseConfiguration = 
createReleaseConfiguration();
 
         Mock scmManagerMock = new Mock( ScmManager.class );
-        scmManagerMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"makeScmRepository" ).with(
+        scmManagerMock.expects( new InvokeOnceMatcher() ).method( 
"makeScmRepository" ).with(
             new IsEqual( "scm-url" ) ).will( new ThrowStub( new 
ScmRepositoryException( "..." ) ) );
 
         ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
@@ -226,7 +263,7 @@
         ReleaseConfiguration releaseConfiguration = 
createReleaseConfiguration();
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
-        scmProviderMock.expects( new InvokeAtLeastOnceMatcher() ).method( 
"checkIn" ).will(
+        scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkIn" 
).will(
             new ThrowStub( new ScmException( "..." ) ) );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml?rev=398862&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
 Tue May  2 01:41:37 2006
@@ -0,0 +1,28 @@
+<!--
+  ~ 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>
+    <module>subproject2</module>
+  </modules>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml?rev=398862&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
 Tue May  2 01:41:37 2006
@@ -0,0 +1,26 @@
+<!--
+  ~ 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>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml?rev=398862&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
 Tue May  2 01:41:37 2006
@@ -0,0 +1,34 @@
+<!--
+  ~ 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>subproject2</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>groupId</groupId>
+      <artifactId>subproject1</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/single-pom/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/single-pom/pom.xml?rev=398862&r1=398861&r2=398862&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/single-pom/pom.xml
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/scm-commit/single-pom/pom.xml
 Tue May  2 01:41:37 2006
@@ -18,5 +18,5 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>groupId</groupId>
   <artifactId>artifactId</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
 </project>


Reply via email to