You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/02/22 15:47:19 UTC

[maven-invoker-plugin] 02/04: improve InvokerPropertiesTest

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

slachiewicz pushed a commit to branch MINVOKER-255
in repository https://gitbox.apache.org/repos/asf/maven-invoker-plugin.git

commit 861a881f50a2b5c6986083cce4d39fbdf4b0aec5
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Mon Feb 17 18:38:20 2020 +0100

    improve InvokerPropertiesTest
---
 .../plugins/invoker/InvokerPropertiesTest.java     | 306 ++++++++++++++-------
 1 file changed, 201 insertions(+), 105 deletions(-)

diff --git a/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java b/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
index b58766c..6408aa8 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
@@ -12,33 +12,50 @@ package org.apache.maven.plugins.invoker;
 
 import java.io.File;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Properties;
 
-import org.apache.maven.plugins.invoker.InvokerProperties;
-import org.apache.maven.shared.invoker.DefaultInvocationRequest;
 import org.apache.maven.shared.invoker.InvocationRequest;
-
-import junit.framework.TestCase;
+import org.apache.maven.shared.invoker.InvocationRequest.ReactorFailureBehavior;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
 
 /**
  * Tests the invoker properties facade.
  *
  * @author Benjamin Bentmann
  */
+@RunWith( MockitoJUnitRunner.class )
 public class InvokerPropertiesTest
-    extends TestCase
 {
 
+    @Mock
+    private InvocationRequest request;
+
+    @Test
     public void testConstructorNullSafe()
-        throws Exception
     {
         InvokerProperties facade = new InvokerProperties( null );
         assertNotNull( facade.getProperties() );
     }
 
+    @Test
     public void testGetInvokerProperty()
-        throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
@@ -53,8 +70,8 @@ public class InvokerPropertiesTest
         assertEquals( "value", facade.get( "key", 2 ) );
     }
 
+    @Test
     public void testGetJobName()
-        throws Exception
     {
         Properties props = new Properties();
         final String jobName = "Build Job name";
@@ -64,8 +81,8 @@ public class InvokerPropertiesTest
         assertEquals( jobName, facade.getJobName() );
     }
 
-    public void testIsExpectedResult()
-        throws Exception
+    @Test
+    public void testIsExpectedResult() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
@@ -82,179 +99,208 @@ public class InvokerPropertiesTest
         assertTrue( facade.isExpectedResult( 1, 0 ) );
     }
 
-    public void testConfigureRequestGoals()
-        throws Exception
+    @Test
+    public void testConfigureRequestEmptyProperties()
     {
-        Properties props = new Properties();
-        InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
+        InvokerProperties facade = new InvokerProperties( null );
 
-        request.setGoals( Collections.singletonList( "test" ) );
         facade.configureInvocation( request, 0 );
-        assertEquals( Collections.singletonList( "test" ), request.getGoals() );
+        verifyZeroInteractions( request );
+    }
+
+    @Test
+    public void testConfigureRequestGoals() throws Exception
+    {
+        Properties props = new Properties();
+        InvokerProperties facade = new InvokerProperties( props );
 
         props.setProperty( "invoker.goals", "verify" );
         facade.configureInvocation( request, 0 );
-        assertEquals( Collections.singletonList( "verify" ), request.getGoals() );
+        verify( request ).setGoals( eq( Collections.singletonList( "verify" ) ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
         props.setProperty( "invoker.goals", "   " );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
+        verify( request ).setGoals( eq( Collections.<String>emptyList() ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
-        props.setProperty( "invoker.goals", "  clean , test   verify  " );
+        props.setProperty( "invoker.goals", "" );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getGoals() );
+        verify( request ).setGoals( eq( Collections.<String>emptyList() ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
-        props.setProperty( "invoker.goals", "" );
+        props.setProperty( "invoker.goals", "  clean , test   verify " );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
+        verify( request ).setGoals( eq( Arrays.asList( "clean", "test", "verify" ) ) );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testConfigureRequestProfiles()
-        throws Exception
+    @Test
+    public void testConfigureRequestProfiles() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
-
-        request.setProfiles( Collections.singletonList( "test" ) );
-        facade.configureInvocation( request, 0 );
-        assertEquals( Collections.singletonList( "test" ), request.getProfiles() );
-
         props.setProperty( "invoker.profiles", "verify" );
         facade.configureInvocation( request, 0 );
-        assertEquals( Collections.singletonList( "verify" ), request.getProfiles() );
+        verify( request ).setProfiles( eq( Collections.singletonList( "verify" ) ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
         props.setProperty( "invoker.profiles", "   " );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
+        verify( request ).setProfiles( eq( Collections.<String>emptyList() ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
-        props.setProperty( "invoker.profiles", "  clean , test   verify  ," );
+        props.setProperty( "invoker.profiles", "" );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getProfiles() );
+        verify( request ).setProfiles( eq( Collections.<String>emptyList() ) );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
-        props.setProperty( "invoker.profiles", "" );
+        props.setProperty( "invoker.profiles", "  clean , test   verify  ," );
         facade.configureInvocation( request, 0 );
-        assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
+        verify( request ).setProfiles( eq( Arrays.asList( "clean", "test", "verify" ) ) );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testConfigureRequestProject()
-        throws Exception
+    @Test
+    public void testConfigureRequestProject() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
-
         File tempPom = File.createTempFile( "maven-invoker-plugin-test", ".pom" );
-        File tempDir = tempPom.getParentFile();
-
-        request.setBaseDirectory( tempDir );
-        facade.configureInvocation( request, 0 );
-        assertEquals( tempDir, request.getBaseDirectory() );
-        assertEquals( null, request.getPomFile() );
-
-        props.setProperty( "invoker.project", tempPom.getName() );
-        request.setBaseDirectory( tempDir );
-        facade.configureInvocation( request, 0 );
-        assertEquals( tempDir, request.getBaseDirectory() );
-        assertEquals( tempPom, request.getPomFile() );
-
-        props.setProperty( "invoker.project", "" );
-        request.setBaseDirectory( tempDir );
-        facade.configureInvocation( request, 0 );
-        assertEquals( tempDir, request.getBaseDirectory() );
-        assertEquals( null, request.getPomFile() );
-
-        tempPom.delete();
+        try
+        {
+            File tempDir = tempPom.getParentFile();
+            when( request.getBaseDirectory() ).thenReturn( tempDir );
+
+            props.setProperty( "invoker.project", tempPom.getName() );
+            facade.configureInvocation( request, 0 );
+            verify( request ).getBaseDirectory();
+            verify( request ).setBaseDirectory( eq( tempDir ) );
+            verify( request ).setPomFile( eq( tempPom ) );
+            verifyNoMoreInteractions( request );
+            clearInvocations( request );
+
+            props.setProperty( "invoker.project", "" );
+            facade.configureInvocation( request, 0 );
+            verify( request ).getBaseDirectory();
+            verify( request ).setBaseDirectory( eq( tempDir ) );
+            verify( request ).setPomFile( null );
+            verifyNoMoreInteractions( request );
+        }
+        finally
+        {
+            tempPom.delete();
+        }
     }
 
+    @Test
     public void testConfigureRequestMavenOpts()
-        throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
-
-        request.setMavenOpts( "default" );
-        facade.configureInvocation( request, 0 );
-        assertEquals( "default", request.getMavenOpts() );
-
         props.setProperty( "invoker.mavenOpts", "-Xmx512m" );
         facade.configureInvocation( request, 0 );
-        assertEquals( "-Xmx512m", request.getMavenOpts() );
+        verify( request ).setMavenOpts( "-Xmx512m" );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testConfigureRequestFailureBehavior()
-        throws Exception
+    @Test
+    public void testConfigureRequestFailureBehavior() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
-
-        request.setReactorFailureBehavior( InvocationRequest.ReactorFailureBehavior.FailAtEnd );
+        props.setProperty( "invoker.failureBehavior", ReactorFailureBehavior.FailNever.getLongOption() );
         facade.configureInvocation( request, 0 );
-        assertEquals( InvocationRequest.ReactorFailureBehavior.FailAtEnd, request.getReactorFailureBehavior() );
-
-        props.setProperty( "invoker.failureBehavior", InvocationRequest.ReactorFailureBehavior.FailNever.getLongOption() );
-        facade.configureInvocation( request, 0 );
-        assertEquals( "fail-never", request.getReactorFailureBehavior().getLongOption() );
+        verify( request ).setReactorFailureBehavior( eq( ReactorFailureBehavior.FailNever ) );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testConfigureRequestRecursion()
-        throws Exception
+    @Test
+    public void testConfigureRequestFailureBehaviorUnKnownName() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
+        props.setProperty( "invoker.failureBehavior", "xxxUnKnown" );
+        try
+        {
+            facade.configureInvocation( request, 0 );
+        }
+        catch ( IllegalArgumentException e )
+        {
+            assertEquals( "The string 'xxxUnKnown' can not be converted to enumeration.", e.getMessage() );
+        }
+        verifyZeroInteractions( request );
+    }
 
-        request.setRecursive( true );
-        facade.configureInvocation( request, 0 );
-        assertTrue( request.isRecursive() );
-        request.setRecursive( false );
-        facade.configureInvocation( request, 0 );
-        assertFalse( request.isRecursive() );
+
+    @Test
+    public void testConfigureRequestRecursion() throws Exception
+    {
+        Properties props = new Properties();
+        InvokerProperties facade = new InvokerProperties( props );
 
         props.setProperty( "invoker.nonRecursive", "true" );
         facade.configureInvocation( request, 0 );
-        assertFalse( request.isRecursive() );
+        verify( request ).setRecursive( false );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
         props.setProperty( "invoker.nonRecursive", "false" );
         facade.configureInvocation( request, 0 );
-        assertTrue( request.isRecursive() );
+        verify( request ).setRecursive( true );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testConfigureRequestOffline()
-        throws Exception
+    @Test
+    public void testConfigureRequestOffline() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
 
-        InvocationRequest request = new DefaultInvocationRequest();
-
-        request.setOffline( true );
+        props.setProperty( "invoker.offline", "true" );
         facade.configureInvocation( request, 0 );
-        assertTrue( request.isOffline() );
-        request.setOffline( false );
+        verify( request ).setOffline( true );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
+
+        props.setProperty( "invoker.offline", "false" );
         facade.configureInvocation( request, 0 );
-        assertFalse( request.isOffline() );
+        verify( request ).setOffline( false );
+        verifyNoMoreInteractions( request );
+    }
 
-        props.setProperty( "invoker.offline", "true" );
+    @Test
+    public void testConfigureRequestDebug() throws Exception
+    {
+        Properties props = new Properties();
+        InvokerProperties facade = new InvokerProperties( props );
+
+        props.setProperty( "invoker.debug", "true" );
         facade.configureInvocation( request, 0 );
-        assertTrue( request.isOffline() );
+        verify( request ).setDebug( true );
+        verifyNoMoreInteractions( request );
+        clearInvocations( request );
 
-        props.setProperty( "invoker.offline", "false" );
+        props.setProperty( "invoker.debug", "false" );
         facade.configureInvocation( request, 0 );
-        assertFalse( request.isOffline() );
+        verify( request ).setDebug( false );
+        verifyNoMoreInteractions( request );
     }
 
-    public void testIsInvocationDefined()
-        throws Exception
+    @Test
+    public void testIsInvocationDefined() throws Exception
     {
         Properties props = new Properties();
         InvokerProperties facade = new InvokerProperties( props );
@@ -275,7 +321,8 @@ public class InvokerPropertiesTest
         assertTrue( facade.isInvocationDefined( 3 ) );
         assertFalse( facade.isInvocationDefined( 4 ) );
     }
-    
+
+    @Test
     public void testIsSelectedDefined()
     {
         Properties props = new Properties();
@@ -297,4 +344,53 @@ public class InvokerPropertiesTest
         assertTrue( facade.isSelectorDefined( 4 ) );
         assertFalse( facade.isSelectorDefined( 5 ) );
     }
+
+    @Test
+    public void testGetToolchainsForEmptyProperties()
+    {
+
+        Properties props = new Properties();
+        InvokerProperties facade = new InvokerProperties( props );
+
+        Collection<InvokerToolchain> toolchains = facade.getToolchains();
+        assertNotNull( toolchains );
+        assertEquals( 0, toolchains.size() );
+
+        toolchains = facade.getToolchains( 1 );
+        assertNotNull( toolchains );
+        assertEquals( 0, toolchains.size() );
+    }
+
+    @Test
+    public void testGetToolchains()
+    {
+
+        Properties props = new Properties();
+        props.put( "invoker.toolchain.jdk.version", "11" );
+        InvokerProperties facade = new InvokerProperties( props );
+
+        Collection<InvokerToolchain> toolchains = facade.getToolchains();
+        assertNotNull( toolchains );
+        assertEquals( 1, toolchains.size() );
+        InvokerToolchain toolchain = toolchains.iterator().next();
+        assertEquals( "jdk", toolchain.getType());
+        assertEquals( Collections.singletonMap( "version", "11" ), toolchain.getProvides());
+    }
+
+    @Test
+    public void testGetToolchainsWithIndex()
+    {
+
+        Properties props = new Properties();
+        props.put( "selector.1.invoker.toolchain.jdk.version", "11" );
+        InvokerProperties facade = new InvokerProperties( props );
+
+        Collection<InvokerToolchain> toolchains = facade.getToolchains(1);
+        assertNotNull( toolchains );
+        assertEquals( 1, toolchains.size() );
+        InvokerToolchain toolchain = toolchains.iterator().next();
+        assertEquals( "jdk", toolchain.getType());
+        assertEquals( Collections.singletonMap( "version", "11" ), toolchain.getProvides());
+    }
+
 }