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 <jaiki...@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) {