You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2020/04/28 06:49:14 UTC
[maven-surefire] branch master updated: [SUREFIRE-1783] Fork JVM
defined by Toolchain should not inherit JAVA_HOME from Maven process
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
The following commit(s) were added to refs/heads/master by this push:
new 8fbb614 [SUREFIRE-1783] Fork JVM defined by Toolchain should not inherit JAVA_HOME from Maven process
8fbb614 is described below
commit 8fbb614652682c81c8716150712e19a721082aab
Author: akomakom <ak...@users.noreply.github.com>
AuthorDate: Tue Apr 28 02:49:05 2020 -0400
[SUREFIRE-1783] Fork JVM defined by Toolchain should not inherit JAVA_HOME from Maven process
---
.../maven/plugin/surefire/AbstractSurefireMojo.java | 10 ++++++++++
.../plugin/surefire/AbstractSurefireMojoTest.java | 9 +++++++++
.../AbstractSurefireMojoToolchainsTest.java | 21 +++++++++++++++++++++
3 files changed, 40 insertions(+)
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 8a0cd0a..ee3106a 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -89,6 +89,7 @@ import org.apache.maven.surefire.util.RunOrder;
import org.apache.maven.toolchain.DefaultToolchain;
import org.apache.maven.toolchain.Toolchain;
import org.apache.maven.toolchain.ToolchainManager;
+import org.apache.maven.toolchain.java.DefaultJavaToolChain;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.languages.java.jpms.LocationManager;
import org.codehaus.plexus.languages.java.jpms.ResolvePathsRequest;
@@ -2555,6 +2556,15 @@ public abstract class AbstractSurefireMojo
|| defaultToolchain.matchesRequirements( JAVA_9_MATCHER_OLD_NOTATION );
}
+ if ( toolchain instanceof DefaultJavaToolChain )
+ {
+ DefaultJavaToolChain defaultJavaToolChain = (DefaultJavaToolChain) toolchain;
+ if ( !environmentVariables.containsKey( "JAVA_HOME" ) )
+ {
+ environmentVariables.put( "JAVA_HOME", defaultJavaToolChain.getJavaHome() );
+ }
+ }
+
if ( !javaVersion9 )
{
javaVersion9 = isJava9AtLeast( jvmToUse );
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index 0553de7..fc9a6fc 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -44,6 +44,7 @@ import org.apache.maven.surefire.booter.Classpath;
import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.extensions.ForkNodeFactory;
import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.toolchain.Toolchain;
import org.codehaus.plexus.logging.Logger;
import org.junit.Before;
import org.junit.Rule;
@@ -61,6 +62,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -2174,6 +2176,13 @@ public class AbstractSurefireMojoTest
{
}
+
+ public void setToolchain( Toolchain toolchain ) throws Exception
+ {
+ Field toolchainField = AbstractSurefireMojo.class.getDeclaredField( "toolchain" );
+ toolchainField.setAccessible( true );
+ toolchainField.set( this, toolchain );
+ }
}
private static File mockFile( String absolutePath )
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
index 7589718..5fd8101 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
@@ -23,6 +23,8 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.toolchain.Toolchain;
import org.apache.maven.toolchain.ToolchainManager;
+import org.apache.maven.toolchain.java.DefaultJavaToolChain;
+import org.fest.assertions.MapAssert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
@@ -135,6 +137,25 @@ public class AbstractSurefireMojoToolchainsTest
}
/**
+ * Ensures that the environmentVariables map for launching a test jvm
+ * contains a Toolchain-driven entry when toolchain is set.
+ */
+ @Test
+ public void shouldChangeJavaHomeFromToolchain() throws Exception
+ {
+ AbstractSurefireMojoTest.Mojo mojo = new AbstractSurefireMojoTest.Mojo();
+ DefaultJavaToolChain toolchain = mock( DefaultJavaToolChain.class );
+ when( toolchain.findTool( "java" ) ).thenReturn( "/some/path/bin/java" );
+ when( toolchain.getJavaHome() ).thenReturn( "/some/path" );
+ mojo.setToolchain( toolchain );
+
+ assertThat( mojo.getEnvironmentVariables() ).isEmpty();
+ invokeMethod( mojo, "getEffectiveJvm" );
+ assertThat( mojo.getEnvironmentVariables() ).includes( MapAssert.entry( "JAVA_HOME", "/some/path" ) );
+ }
+
+
+ /**
* Mocks a ToolchainManager
*/
public static final class MockToolchainManager extends MockToolchainManagerMaven32