From 976297dec660de7e625c7973ad75373e12fc5928 Mon Sep 17 00:00:00 2001 From: Frederic Thevenet Date: Mon, 18 May 2026 08:38:47 +0000 Subject: [PATCH] 8378583: (process) ProcessBuilder tests that span deeper trees must pass launchMechanism to their children Reviewed-by: stuefe, bchristi --- test/jdk/java/lang/ProcessBuilder/Basic.java | 21 ++++++++++++++----- .../lang/ProcessBuilder/InvalidWorkDir.java | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/test/jdk/java/lang/ProcessBuilder/Basic.java b/test/jdk/java/lang/ProcessBuilder/Basic.java index f8f04753c26..e58bdfa6863 100644 --- a/test/jdk/java/lang/ProcessBuilder/Basic.java +++ b/test/jdk/java/lang/ProcessBuilder/Basic.java @@ -602,11 +602,22 @@ public class Basic { private static final String classpath = System.getProperty("java.class.path"); - private static final List javaChildArgs = - Arrays.asList(javaExe, - "-XX:+DisplayVMOutputToStderr", - "-classpath", absolutifyPath(classpath), - "Basic$JavaChild"); + private static List prepareJavaChildArgs() { + List javaArgs = new ArrayList<>(); + javaArgs.add(javaExe); + javaArgs.add("-XX:+DisplayVMOutputToStderr"); + // Propagate launchMechanism mode to spawned java processes if specified. + var launchMechanism = System.getProperty("jdk.lang.Process.launchMechanism"); + if (launchMechanism != null) { + javaArgs.add("-Djdk.lang.Process.launchMechanism=" + launchMechanism); + } + javaArgs.add("-classpath"); + javaArgs.add(absolutifyPath(classpath)); + javaArgs.add("Basic$JavaChild"); + return javaArgs; + } + + private static final List javaChildArgs = prepareJavaChildArgs(); private static void testEncoding(String encoding, String tested) { try { diff --git a/test/jdk/java/lang/ProcessBuilder/InvalidWorkDir.java b/test/jdk/java/lang/ProcessBuilder/InvalidWorkDir.java index 310ecf03f97..10de83190dc 100644 --- a/test/jdk/java/lang/ProcessBuilder/InvalidWorkDir.java +++ b/test/jdk/java/lang/ProcessBuilder/InvalidWorkDir.java @@ -38,7 +38,7 @@ * @requires (os.family != "windows") * @requires vm.flagless * @library /test/lib - * @run main/othervm -Xmx64m -Djdk.lang.Process.launchMechanism=FORK InvalidWorkDir + * @run main/othervm -Xmx64m -Djdk.lang.Process.launchMechanism=POSIX_SPAWN InvalidWorkDir */ import jdk.test.lib.process.OutputAnalyzer;