You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ja...@apache.org on 2021/11/28 13:17:19 UTC

[ant] 02/02: Pass -Djava.security.manager=allow while launching JUnit forked VM to allow JUnit triggered code to set security manager at runtime

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

jaikiran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit 13e6e309585b18210b71d8ecc70af2a075804873
Author: Jaikiran Pai <ja...@apache.org>
AuthorDate: Sun Nov 28 18:44:52 2021 +0530

    Pass -Djava.security.manager=allow while launching JUnit forked VM to allow JUnit triggered code to set security manager at runtime
---
 .../apache/tools/ant/taskdefs/optional/junit/JUnitTask.java    | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index 2f6b42e..02fc038 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -64,6 +64,7 @@ import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.Permissions;
 import org.apache.tools.ant.types.PropertySet;
 import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.JavaEnvUtils;
 import org.apache.tools.ant.util.LoaderUtils;
 import org.apache.tools.ant.util.SplitClassLoader;
 import org.apache.tools.ant.util.StringUtils;
@@ -1164,6 +1165,15 @@ public class JUnitTask extends Task {
         } catch (final CloneNotSupportedException e) {
             throw new BuildException("This shouldn't happen", e, getLocation());
         }
+        // if Java 18, then we set -Djava.security.manager=allow so as to allow
+        // Ant code to internally set the security manager
+        if (JavaEnvUtils.isAtLeastJavaVersion("18")) {
+            log("Setting -Djava.security.manager=allow on forked JVM of JUnit task", Project.MSG_VERBOSE);
+            final Environment.Variable securityManagerSysProp = new Environment.Variable();
+            securityManagerSysProp.setKey("java.security.manager");
+            securityManagerSysProp.setValue("allow");
+            cmd.addSysproperty(securityManagerSysProp);
+        }
         if (casesFile == null) {
             cmd.createArgument().setValue(test.getName());
             if (test.getMethods() != null) {