You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/02/23 19:34:04 UTC
svn commit: r1292885 -
/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
Author: rfscholte
Date: Thu Feb 23 18:34:04 2012
New Revision: 1292885
URL: http://svn.apache.org/viewvc?rev=1292885&view=rev
Log:
MRELEASE-741: migrate to mockito
Modified:
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java?rev=1292885&r1=1292884&r2=1292885&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java Thu Feb 23 18:34:04 2012
@@ -19,17 +19,34 @@ package org.apache.maven.shared.release.
* under the License.
*/
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
import org.apache.maven.project.MavenProject;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFile;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.manager.NoSuchScmProviderException;
import org.apache.maven.scm.manager.ScmManager;
import org.apache.maven.scm.manager.ScmManagerStub;
import org.apache.maven.scm.provider.ScmProvider;
import org.apache.maven.scm.provider.ScmProviderStub;
+import org.apache.maven.scm.repository.ScmRepository;
import org.apache.maven.scm.repository.ScmRepositoryException;
import org.apache.maven.shared.release.ReleaseExecutionException;
import org.apache.maven.shared.release.ReleaseFailureException;
@@ -40,21 +57,6 @@ import org.apache.maven.shared.release.s
import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
import org.apache.maven.shared.release.util.ReleaseUtil;
-import org.jmock.Mock;
-import org.jmock.core.Constraint;
-import org.jmock.core.constraint.IsAnything;
-import org.jmock.core.constraint.IsEqual;
-import org.jmock.core.constraint.IsNull;
-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.Collections;
-import java.util.Iterator;
-import java.util.List;
/**
* Test the release or branch preparation SCM commit phase.
@@ -88,6 +90,7 @@ public class ScmCommitPreparationPhaseTe
public void testCommit()
throws Exception
{
+ // prepare
List<MavenProject> reactorProjects = createReactorProjects();
ReleaseDescriptor descriptor = new ReleaseDescriptor();
descriptor.setScmSourceUrl( "scm-url" );
@@ -97,29 +100,31 @@ public class ScmCommitPreparationPhaseTe
ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), rootProject.getFile() );
- 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( new ScmFile( rootProject
- .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) ) );
-
-
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) ) ).thenReturn( new CheckInScmResult( "...", Collections.singletonList( new ScmFile( rootProject
+ .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) );
ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.setScmProvider( scmProviderMock );
+ // execute
phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) );
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testCommitMultiModule()
throws Exception
{
+ // prepare
ReleaseDescriptor descriptor = new ReleaseDescriptor();
List<MavenProject> reactorProjects = createReactorProjects( "scm-commit/", "multiple-poms" );
descriptor.setScmSourceUrl( "scm-url" );
@@ -135,27 +140,32 @@ public class ScmCommitPreparationPhaseTe
}
ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), poms);
- 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( new ScmFile( rootProject
- .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) ) );
-
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) ) ).thenReturn( new CheckInScmResult(
+ "...",
+ Collections.singletonList( new ScmFile( rootProject.getFile().getPath(),
+ ScmFileStatus.CHECKED_IN ) ) ) );
ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.setScmProvider( scmProviderMock );
+ // execute
phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) );
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testCommitDevelopment()
throws Exception
{
+ // prepare
phase = (ReleasePhase) lookup( ReleasePhase.ROLE, "scm-commit-development" );
ReleaseDescriptor descriptor = new ReleaseDescriptor();
@@ -167,22 +177,25 @@ public class ScmCommitPreparationPhaseTe
ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), rootProject.getFile() );
- Mock scmProviderMock = new Mock( ScmProvider.class );
- Constraint[] arguments = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( fileSet ), new IsNull(),
- new IsEqual( "[maven-release-manager] prepare for next development iteration" )};
- scmProviderMock
- .expects( new InvokeOnceMatcher() )
- .method( "checkIn" )
- .with( arguments )
- .will( new ReturnStub( new CheckInScmResult( "...", Collections.singletonList( new ScmFile( rootProject
- .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) ) );
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( "[maven-release-manager] prepare for next development iteration" ) ) ).thenReturn( new CheckInScmResult( "...", Collections.singletonList( new ScmFile( rootProject
+ .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) );
ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.setScmProvider( scmProviderMock );
+ // execute
phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( "[maven-release-manager] prepare for next development iteration" ) );
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testCommitNoReleaseLabel()
@@ -205,6 +218,7 @@ public class ScmCommitPreparationPhaseTe
public void testCommitGenerateReleasePoms()
throws Exception
{
+ // prepare
List<MavenProject> reactorProjects = createReactorProjects();
ReleaseDescriptor descriptor = new ReleaseDescriptor();
descriptor.setScmSourceUrl( "scm-url" );
@@ -218,22 +232,25 @@ public class ScmCommitPreparationPhaseTe
files.add( ReleaseUtil.getReleasePom( rootProject ) );
ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), files );
- 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( new ScmFile( rootProject
- .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) ) );
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) ) ).thenReturn( new CheckInScmResult( "...", Collections.singletonList( new ScmFile( rootProject
+ .getFile().getPath(), ScmFileStatus.CHECKED_IN ) ) ) );
ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.setScmProvider( scmProviderMock );
+ // execute
phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ),
+ argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( PREFIX + "release-label" ) );
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testSimulateCommit()
@@ -246,11 +263,15 @@ public class ScmCommitPreparationPhaseTe
descriptor.setWorkingDirectory( rootProject.getFile().getParentFile().getAbsolutePath() );
descriptor.setScmReleaseLabel( "release-label" );
- validateNoCheckin();
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( scmProviderMock );
phase.simulate( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
+ // never invoke scmProviderMock
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testSimulateCommitNoReleaseLabel()
@@ -273,18 +294,18 @@ public class ScmCommitPreparationPhaseTe
public void testNoSuchScmProviderExceptionThrown()
throws Exception
{
+ // prepare
List<MavenProject> reactorProjects = createReactorProjects();
ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
- Mock scmManagerMock = new Mock( ScmManager.class );
- scmManagerMock.expects( new InvokeOnceMatcher() ).method( "makeScmRepository" ).with( new IsEqual(
- "scm-url" ) ).will( new ThrowStub( new NoSuchScmProviderException( "..." ) ) );
+ ScmManager scmManagerMock = mock( ScmManager.class );
+ when( scmManagerMock.makeScmRepository( "scm-url" ) ).thenThrow( new NoSuchScmProviderException( "..." ) );
- ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
DefaultScmRepositoryConfigurator configurator = (DefaultScmRepositoryConfigurator) lookup(
ScmRepositoryConfigurator.ROLE );
- configurator.setScmManager( scmManager );
+ configurator.setScmManager( scmManagerMock );
+ // execute
try
{
phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
@@ -295,23 +316,27 @@ public class ScmCommitPreparationPhaseTe
{
assertEquals( "check cause", NoSuchScmProviderException.class, e.getCause().getClass() );
}
+
+ // verify
+ verify( scmManagerMock ).makeScmRepository( "scm-url" );
+ verifyNoMoreInteractions( scmManagerMock );
}
public void testScmRepositoryExceptionThrown()
throws Exception
{
+ // prepare
List<MavenProject> reactorProjects = createReactorProjects();
ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
- Mock scmManagerMock = new Mock( ScmManager.class );
- scmManagerMock.expects( new InvokeOnceMatcher() ).method( "makeScmRepository" ).with( new IsEqual(
- "scm-url" ) ).will( new ThrowStub( new ScmRepositoryException( "..." ) ) );
+ ScmManager scmManagerMock = mock( ScmManager.class );
+ when( scmManagerMock.makeScmRepository( "scm-url" ) ).thenThrow( new ScmRepositoryException( "..." ) );
- ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
DefaultScmRepositoryConfigurator configurator = (DefaultScmRepositoryConfigurator) lookup(
ScmRepositoryConfigurator.ROLE );
- configurator.setScmManager( scmManager );
+ configurator.setScmManager( scmManagerMock );
+ // execute
try
{
phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
@@ -322,21 +347,29 @@ public class ScmCommitPreparationPhaseTe
{
assertNull( "Check no additional cause", e.getCause() );
}
+
+ // verify
+ verify( scmManagerMock ).makeScmRepository( "scm-url" );
+ verifyNoMoreInteractions( scmManagerMock );
}
public void testScmExceptionThrown()
throws Exception
{
+ // prepare
List<MavenProject> reactorProjects = createReactorProjects();
ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
- Mock scmProviderMock = new Mock( ScmProvider.class );
- scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkIn" ).will( new ThrowStub( new ScmException(
- "..." ) ) );
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ),
+ isA( ScmFileSet.class ),
+ isNull( ScmVersion.class ),
+ isA( String.class ) ) ).thenThrow( new ScmException( "..." ) );
ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.setScmProvider( scmProviderMock );
+ // execute
try
{
phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
@@ -347,6 +380,13 @@ public class ScmCommitPreparationPhaseTe
{
assertEquals( "check cause", ScmException.class, e.getCause().getClass() );
}
+
+ //verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ),
+ isA( ScmFileSet.class ),
+ isNull( ScmVersion.class ),
+ isA( String.class ) );
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testScmResultFailure()
@@ -382,7 +422,10 @@ public class ScmCommitPreparationPhaseTe
descriptor.setRemoteTagging( true );
descriptor.setSuppressCommitBeforeTagOrBranch( true );
- validateNoCheckin();
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( scmProviderMock );
try
{
@@ -395,7 +438,8 @@ public class ScmCommitPreparationPhaseTe
assertNull( "check no other cause", e.getCause() );
}
- assertTrue( true );
+ // never invoke scmProviderMock
+ verifyNoMoreInteractions( scmProviderMock );
}
public void testSuppressCommitAfterBranch()
@@ -408,21 +452,15 @@ public class ScmCommitPreparationPhaseTe
descriptor.setRemoteTagging( false );
descriptor.setSuppressCommitBeforeTagOrBranch( true );
- validateNoCheckin();
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( scmProviderMock );
phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
- assertTrue( true );
- }
-
- private void validateNoCheckin()
- throws Exception
- {
- Mock scmProviderMock = new Mock( ScmProvider.class );
- scmProviderMock.expects( new TestFailureMatcher( "Shouldn't have called checkIn" ) ).method( "checkIn" );
-
- ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
- stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ // never invoke scmProviderMock
+ verifyNoMoreInteractions( scmProviderMock );
}
private List<MavenProject> createReactorProjects()
@@ -439,6 +477,4 @@ public class ScmCommitPreparationPhaseTe
descriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
return descriptor;
}
-
-
-}
+}
\ No newline at end of file