Author: rfscholte
Date: Thu Feb 23 19:39:32 2012
New Revision: 1292919

URL: http://svn.apache.org/viewvc?rev=1292919&view=rev
Log:
MRELEASE-741: migrate to mockito
 

Modified:
    
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java

Modified: 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java?rev=1292919&r1=1292918&r2=1292919&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java
 Thu Feb 23 19:39:32 2012
@@ -19,6 +19,14 @@ 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.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.io.IOException;
 import java.util.Collections;
@@ -48,14 +56,6 @@ import org.apache.maven.shared.release.s
 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.shared.release.stubs.ScmManagerStub;
 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.matcher.InvokeOnceMatcher;
-import org.jmock.core.matcher.TestFailureMatcher;
-import org.jmock.core.stub.ReturnStub;
-import org.jmock.core.stub.ThrowStub;
 
 /**
  * Test the SCM tag phase.
@@ -82,6 +82,7 @@ public class ScmTagPhaseTest
     public void testTag()
         throws Exception
     {
+        // prepare
         ReleaseDescriptor descriptor = new ReleaseDescriptor();
         List<MavenProject> reactorProjects = createReactorProjects();
         descriptor.setScmSourceUrl( "scm-url" );
@@ -92,28 +93,32 @@ public class ScmTagPhaseTest
 
         ScmFileSet fileSet = new ScmFileSet( 
rootProject.getFile().getParentFile() );
 
-        Mock scmProviderMock = new Mock( ScmProvider.class );
-        Constraint[] arguments =
-            new Constraint[]{new IsAnything(), new IsScmFileSetEquals( fileSet 
), new IsEqual( "release-label" ),
-                new IsScmTagParamtersEquals( new ScmTagParameters( "[my 
prefix] copy for tag release-label" ) )};
-        scmProviderMock
-            .expects( new InvokeOnceMatcher() )
-            .method( "tag" )
-            .with( arguments )
-            .will( new ReturnStub( new TagScmResult( "...", 
Collections.singletonList( new ScmFile( getPath (rootProject
-                       .getFile() ), ScmFileStatus.TAGGED ) ) ) ) );
-
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
+        when( scmProviderMock.tag( isA( ScmRepository.class ),
+                                   argThat( new IsScmFileSetEquals( fileSet ) 
),
+                                   eq( "release-label" ), 
+                                   argThat( new IsScmTagParamtersEquals( new 
ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) ) ).
+                                   thenReturn( new TagScmResult( "...", 
+                                                                 
Collections.singletonList( new ScmFile( getPath (rootProject
+                                                                               
                                   .getFile() ), ScmFileStatus.TAGGED ) ) ) );
         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 ).tag( isA( ScmRepository.class ),
+                                       argThat( new IsScmFileSetEquals( 
fileSet ) ),
+                                       eq( "release-label" ), 
+                                       argThat( new IsScmTagParamtersEquals( 
new ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) );
+        verifyNoMoreInteractions( scmProviderMock );
     }
 
     public void testCommitMultiModuleDeepFolders()
         throws Exception
     {
+        // prepare
         List<MavenProject> reactorProjects = createReactorProjects( 
"scm-commit/", "multimodule-with-deep-subprojects" );
         String sourceUrl = "http://svn.example.com/repos/project/trunk/";;
         String scmUrl = "scm:svn:" + sourceUrl;
@@ -127,31 +132,36 @@ public class ScmTagPhaseTest
 
         ScmFileSet fileSet = new ScmFileSet( 
rootProject.getFile().getParentFile() );
 
-        Mock scmProviderMock = new Mock( ScmProvider.class );
         SvnScmProviderRepository scmProviderRepository = new 
SvnScmProviderRepository( sourceUrl );
         scmProviderRepository.setTagBase( 
"http://svn.example.com/repos/project/releases/"; );
         ScmRepository repository = new ScmRepository( "svn", 
scmProviderRepository );
-        Constraint[] arguments = new Constraint[]{new IsEqual( repository ), 
new IsScmFileSetEquals( fileSet ),
-            new IsEqual( "release-label" ),
-            new IsScmTagParamtersEquals( new ScmTagParameters( "[my prefix] 
copy for tag release-label" ) )};
-        
-        scmProviderMock
-            .expects( new InvokeOnceMatcher() )
-            .method( "tag" )
-            .with( arguments )
-            .will( new ReturnStub( new TagScmResult( "...", 
Collections.singletonList( new ScmFile( getPath (rootProject
-                       .getFile() ), ScmFileStatus.TAGGED ) ) ) ) );
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
+        when( scmProviderMock.tag( eq( repository ),
+                                   argThat(new IsScmFileSetEquals( fileSet ) 
), 
+                                   eq( "release-label" ),
+                                   argThat(new IsScmTagParamtersEquals( new 
ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) ) ).
+                                       thenReturn(  new TagScmResult( "...", 
Collections.singletonList( new ScmFile( getPath (rootProject
+                                                                               
                                               .getFile() ), 
ScmFileStatus.TAGGED ) ) ) ) ;
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
-        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+        stub.setScmProvider( scmProviderMock );
         stub.addScmRepositoryForUrl( scmUrl, repository );
 
+        // execute
         phase.execute( descriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
+        
+        // verify
+        verify( scmProviderMock ).tag( eq( repository ),
+                                       argThat(new IsScmFileSetEquals( fileSet 
) ), 
+                                       eq( "release-label" ),
+                                       argThat(new IsScmTagParamtersEquals( 
new ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) );
+        verifyNoMoreInteractions( scmProviderMock ); 
     }
 
     public void testCommitForFlatMultiModule()
         throws Exception
     {
+        // prepare
         List<MavenProject> reactorProjects =
             createReactorProjects( "rewrite-for-release/pom-with-parent-flat", 
"/root-project" );
         MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects 
);
@@ -164,30 +174,39 @@ public class ScmTagPhaseTest
         // one directory up from root project
         ScmFileSet fileSet = new ScmFileSet( 
rootProject.getFile().getParentFile().getParentFile() );
 
-        Mock scmProviderMock = new Mock( ScmProvider.class );
         String scmUrl = "file://localhost/tmp/scm-repo/trunk";
         SvnScmProviderRepository scmProviderRepository = new 
SvnScmProviderRepository( scmUrl );
         ScmRepository repository = new ScmRepository( "svn", 
scmProviderRepository );
-        Constraint[] arguments = new Constraint[]{new IsEqual( repository ), 
new IsScmFileSetEquals( fileSet ),
-            new IsEqual( "release-label" ),
-            new IsScmTagParamtersEquals( new ScmTagParameters( "[my prefix] 
copy for tag release-label" ) )};
-        scmProviderMock
-            .expects( new InvokeOnceMatcher() )
-            .method( "tag" )
-            .with( arguments )
-            .will( new ReturnStub( new TagScmResult( "...", 
Collections.singletonList( new ScmFile( getPath (rootProject
-                       .getFile() ), ScmFileStatus.TAGGED ) ) ) ) );
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
+        when( scmProviderMock.tag( eq( repository ),
+                                   argThat( new IsScmFileSetEquals( fileSet ) 
),
+                                   eq( "release-label" ),
+                                   argThat( new IsScmTagParamtersEquals( new 
ScmTagParameters(
+                                           "[my prefix] copy for tag 
release-label" ) ) ) ) ).thenReturn( new TagScmResult(
+                                                "...",
+                                                Collections.singletonList( new 
ScmFile(
+                                                                               
         getPath( rootProject.getFile() ),
+                                                                               
         ScmFileStatus.TAGGED ) ) ) );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
-        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+        stub.setScmProvider( scmProviderMock );
         stub.addScmRepositoryForUrl( "scm:svn:" + scmUrl, repository );
 
+        // execute
         phase.execute( descriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
+        
+        // verify
+        verify( scmProviderMock ).tag( eq( repository ),
+                                       argThat( new IsScmFileSetEquals( 
fileSet ) ),
+                                       eq( "release-label" ),
+                                       argThat( new IsScmTagParamtersEquals( 
new ScmTagParameters( "[my prefix] copy for tag 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" );
@@ -198,23 +217,25 @@ public class ScmTagPhaseTest
 
         ScmFileSet fileSet = new ScmFileSet( 
rootProject.getFile().getParentFile() );
 
-        Mock scmProviderMock = new Mock( ScmProvider.class );
-        Constraint[] arguments =
-            new Constraint[]{new IsAnything(), new IsScmFileSetEquals( fileSet 
), new IsEqual( "release-label" ),
-                new IsScmTagParamtersEquals( new ScmTagParameters( "[my 
prefix] copy for tag release-label" ) )};
-        scmProviderMock
-            .expects( new InvokeOnceMatcher() )
-            .method( "tag" )
-            .with( arguments )
-            .will( new ReturnStub( new TagScmResult( "...", 
Collections.singletonList( new ScmFile( getPath( rootProject
-                       .getFile() ), ScmFileStatus.TAGGED ) ) ) ) );
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
+        when( scmProviderMock.tag( isA( ScmRepository.class ),
+                                   argThat( new IsScmFileSetEquals( fileSet ) 
),
+                                   eq( "release-label" ),
+                                   argThat( new IsScmTagParamtersEquals( new 
ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) ) 
).thenReturn( new TagScmResult( "...", Collections.singletonList( new ScmFile( 
getPath( rootProject
+                       .getFile() ), ScmFileStatus.TAGGED ) ) ) );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
-        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+        stub.setScmProvider( scmProviderMock );
 
+        // exeucte
         phase.execute( descriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
-        assertTrue( true );
+        // verify
+        verify( scmProviderMock ).tag( isA( ScmRepository.class ),
+                                       argThat( new IsScmFileSetEquals( 
fileSet ) ),
+                                       eq( "release-label" ),
+                                       argThat( new IsScmTagParamtersEquals( 
new ScmTagParameters( "[my prefix] copy for tag release-label" ) ) ) );
+        verifyNoMoreInteractions( scmProviderMock );
     }
 
     public void testTagNoReleaseLabel()
@@ -244,15 +265,17 @@ public class ScmTagPhaseTest
         descriptor.setWorkingDirectory( getPath ( 
rootProject.getFile().getParentFile() ) );
         descriptor.setScmReleaseLabel( "release-label" );
 
-        Mock scmProviderMock = new Mock( ScmProvider.class );
-        scmProviderMock.expects( new TestFailureMatcher( "Shouldn't have 
called tag" ) ).method( "tag" );
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
 
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
-        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+        stub.setScmProvider( scmProviderMock );
 
+        // execute
         phase.simulate( descriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
-        assertTrue( true );
+        // verify
+        // no scmProvider invocation
+        verifyNoMoreInteractions( scmProviderMock );
     }
 
     public void testSimulateTagNoReleaseLabel()
@@ -275,18 +298,18 @@ public class ScmTagPhaseTest
     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 );
@@ -297,23 +320,26 @@ public class ScmTagPhaseTest
         {
             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 scmManager = (ScmManager) scmManagerMock.proxy();
+        ScmManager scmManagerMock = mock( ScmManager.class );
+        when( scmManagerMock.makeScmRepository( "scm-url" ) ).thenThrow( new 
ScmRepositoryException( "..." ) );
         DefaultScmRepositoryConfigurator configurator =
             (DefaultScmRepositoryConfigurator) lookup( 
ScmRepositoryConfigurator.ROLE );
-        configurator.setScmManager( scmManager );
+        configurator.setScmManager( scmManagerMock );
 
+        // execute
         try
         {
             phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
@@ -324,21 +350,29 @@ public class ScmTagPhaseTest
         {
             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( "tag" 
).will(
-            new ThrowStub( new ScmException( "..." ) ) );
+        ScmProvider scmProviderMock = mock( ScmProvider.class );
+        when( scmProviderMock.tag( isA( ScmRepository.class ),
+                                   isA( ScmFileSet.class ),
+                                   isA( String.class ),
+                                   isA( ScmTagParameters.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 );
@@ -349,6 +383,13 @@ public class ScmTagPhaseTest
         {
             assertEquals( "check cause", ScmException.class, 
e.getCause().getClass() );
         }
+        
+        // verify
+        verify( scmProviderMock ).tag( isA( ScmRepository.class ),
+                                       isA( ScmFileSet.class ),
+                                       isA( String.class ),
+                                       isA( ScmTagParameters.class ) );
+        verifyNoMoreInteractions( scmProviderMock );
     }
 
     public void testScmResultFailure()
@@ -390,5 +431,4 @@ public class ScmTagPhaseTest
         descriptor.setWorkingDirectory( getPath(getTestFile( 
"target/test/checkout" ) ) );
         return descriptor;
     }
-
-}
+}
\ No newline at end of file


Reply via email to