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 2017/12/24 14:50:06 UTC

[maven-release] 02/04: Move unittests to proper unit

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git

commit 2fdfcc39b9088707b85d334be6b487584745e677
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Dec 23 21:24:36 2017 +0100

    Move unittests to proper unit
---
 .../shared/release/DefaultReleaseManagerTest.java  | 100 +++------------------
 .../release/phase/CheckoutProjectFromScmTest.java  |  64 +++++++++++++
 .../maven/shared/release/stubs/ScmManagerStub.java |  29 +++++-
 3 files changed, 104 insertions(+), 89 deletions(-)

diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
index f769f6c..511bd02 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
@@ -19,19 +19,31 @@ package org.apache.maven.shared.release;
  * under the License.
  */
 
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+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;
+import java.util.List;
+
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmTag;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-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.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStore;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreException;
@@ -40,19 +52,9 @@ import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
 import org.apache.maven.shared.release.env.ReleaseEnvironment;
 import org.apache.maven.shared.release.phase.ReleasePhase;
 import org.apache.maven.shared.release.phase.ReleasePhaseStub;
-import org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator;
 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
-import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
-import static org.mockito.Mockito.*;
 
 /**
  * Test the default release manager.
@@ -520,80 +522,6 @@ public class DefaultReleaseManagerTest
         }
     }
 
-    public void testNoSuchScmProviderExceptionThrown()
-        throws Exception
-    {
-        // prepare
-        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
-        releaseDescriptor.setScmSourceUrl( "scm-url" );
-        releaseDescriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
-
-        ScmManager scmManagerMock = mock( ScmManager.class );
-        when( scmManagerMock.makeScmRepository( "scm-url" ) ).thenThrow( new NoSuchScmProviderException( "..." ) );
-
-        ReleasePhase rp = (ReleasePhase) lookup( ReleasePhase.ROLE, "checkout-project-from-scm");
-        DefaultScmRepositoryConfigurator configurator =
-            (DefaultScmRepositoryConfigurator) Whitebox.getInternalState( rp, "scmRepositoryConfigurator" );
-        configurator.setScmManager( scmManagerMock );
-
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
-
-        // execute
-        try
-        {
-            releaseDescriptor.setUseReleaseProfile( false );
-
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), null );
-
-            fail( "commit should have failed" );
-        }
-        catch ( ReleaseExecutionException e )
-        {
-            assertEquals( "check cause", NoSuchScmProviderException.class, e.getCause().getClass() );
-        }
-        
-        // verify
-        verify( scmManagerMock ).makeScmRepository( "scm-url" );
-        verifyNoMoreInteractions( scmManagerMock );
-    }
-
-    public void testScmRepositoryExceptionThrown()
-        throws Exception
-    {
-        // prepare
-        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
-        releaseDescriptor.setScmSourceUrl( "scm-url" );
-        releaseDescriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
-
-        ScmManager scmManagerMock = mock( ScmManager.class );
-        when( scmManagerMock.makeScmRepository( "scm-url" ) ).thenThrow( new ScmRepositoryException( "..." ) );
-
-        ReleasePhase rp = (ReleasePhase) lookup( ReleasePhase.ROLE, "checkout-project-from-scm");
-        DefaultScmRepositoryConfigurator configurator =
-            (DefaultScmRepositoryConfigurator) Whitebox.getInternalState( rp, "scmRepositoryConfigurator" );
-        configurator.setScmManager( scmManagerMock );        
-
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
-
-        // execute
-        try
-        {
-            releaseDescriptor.setUseReleaseProfile( false );
-
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), null );
-
-            fail( "commit should have failed" );
-        }
-        catch ( ReleaseScmRepositoryException e )
-        {
-            assertNull( "Check no additional cause", e.getCause() );
-        }
-        
-        // verify
-        verify( scmManagerMock ).makeScmRepository( "scm-url" );
-        verifyNoMoreInteractions( scmManagerMock );
-    }
-
     public void testScmExceptionThrown()
         throws Exception
     {
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScmTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScmTest.java
index 0030e6d..cfed3f0 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScmTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScmTest.java
@@ -20,6 +20,8 @@ package org.apache.maven.shared.release.phase;
  */
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
@@ -36,12 +38,16 @@ import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmTag;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.provider.ScmProvider;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 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.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
+import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.shared.release.stubs.ScmManagerStub;
 import org.junit.Test;
 
@@ -186,5 +192,63 @@ public class CheckoutProjectFromScmTest
                                             any( CommandParameters.class ));
         verifyNoMoreInteractions( scmProviderMock );
     }
+    
+    @Test
+    public void testNoSuchScmProviderExceptionThrown()
+                    throws Exception
+    {
+        // prepare
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        releaseDescriptor.setScmSourceUrl( "scm-url" );
+        releaseDescriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
+        
+        ScmManagerStub scmManagerStub = (ScmManagerStub) lookup( ScmManager.ROLE );
+        scmManagerStub.setException( new NoSuchScmProviderException( "..." )  );
+
+        List<MavenProject> reactorProjects = createReactorProjects( "scm-commit", "/single-pom" );
+        
+        // execute
+        try
+        {
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+            fail( "commit should have failed" );
+        }
+        catch ( ReleaseExecutionException e )
+        {
+            assertEquals( "check cause", NoSuchScmProviderException.class, e.getCause().getClass() );
+        }
+    }
+
+    @Test
+    public void testScmRepositoryExceptionThrown()
+        throws Exception
+    {
+        // prepare
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        releaseDescriptor.setScmSourceUrl( "scm-url" );
+        releaseDescriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
+
+        ScmManagerStub scmManagerStub = (ScmManagerStub) lookup( ScmManager.ROLE );
+        scmManagerStub.setException( new ScmRepositoryException( "..." )  );
+
+        List<MavenProject> reactorProjects = createReactorProjects( "scm-commit", "/single-pom" );
+        
+        // execute
+        try
+        {
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+            fail( "commit should have failed" );
+        }
+        catch ( ReleaseScmRepositoryException e )
+        {
+            assertNull( "Check no additional cause", e.getCause() );
+        }
+    }
 
 }
\ No newline at end of file
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/stubs/ScmManagerStub.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/stubs/ScmManagerStub.java
index b16b404..ec0ebec 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/stubs/ScmManagerStub.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/stubs/ScmManagerStub.java
@@ -32,19 +32,37 @@ import org.apache.maven.scm.repository.ScmRepositoryException;
 public class ScmManagerStub
     extends org.apache.maven.scm.manager.ScmManagerStub
 {
-    private Map<String, ScmRepository> scmRepositoriesForUrl = new HashMap<String, ScmRepository>();
+    private Exception e;
+    
+    private Map<String, ScmRepository> scmRepositoriesForUrl = new HashMap<>();
 
-    /*@Override*/
+    @Override
     public ScmRepository makeScmRepository( String scmUrl )
         throws ScmRepositoryException, NoSuchScmProviderException
     {
+        if ( e != null )
+        {
+            if ( e instanceof ScmRepositoryException )
+            {
+                throw (ScmRepositoryException) e;
+            }
+            else if ( e instanceof NoSuchScmProviderException )
+            {
+                throw (NoSuchScmProviderException) e;
+            }
+            else
+            {
+                throw new RuntimeException( e );
+            }
+        }
+        
         if ( scmRepositoriesForUrl.isEmpty() )
         {
             // we didn't configure any for URLs, return the preset one
             return getScmRepository();
         }
 
-        ScmRepository repository = (ScmRepository) scmRepositoriesForUrl.get( scmUrl );
+        ScmRepository repository = scmRepositoriesForUrl.get( scmUrl );
         if ( repository == null )
         {
             throw new ScmRepositoryException( "Unexpected URL: " + scmUrl );
@@ -56,4 +74,9 @@ public class ScmManagerStub
     {
         scmRepositoriesForUrl.put( url, repository );
     }
+    
+    public void setException( Exception e )
+    {
+        this.e = e;
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@maven.apache.org" <co...@maven.apache.org>.