7174723: java/lang/ProcessBuilder/Basic.java failing [win]
Alan Bateman
Alan.Bateman at oracle.com
Thu Jun 7 14:18:45 UTC 2012
Mike,
ProcessBuilder/Basic.java has been failing on Windows since the hash
work went into jdk8/tl. This test is 11500 tests in one and the
removeMappings fix fixes some of the failures. I looked into remaining
issues today and it's another assumption on iteration order. A child
process prints out the map of its environment variables and the parent
assumes the order that they come back. I've changed the test so that the
child process sorts them and adjusted the order that the parent expects.
This means the test is passing again on all platforms. Attached is the
patch. Assuming you are okay with then then we can push it after you
push the fix for 7174736.
-Alan
diff --git a/test/java/lang/ProcessBuilder/Basic.java
b/test/java/lang/ProcessBuilder/Basic.java
--- a/test/java/lang/ProcessBuilder/Basic.java
+++ b/test/java/lang/ProcessBuilder/Basic.java
@@ -248,6 +248,7 @@ public class Basic {
private static String getenvAsString(Map<String,String> environment) {
StringBuilder sb = new StringBuilder();
+ environment = new TreeMap<>(environment);
for (Map.Entry<String,String> e : environment.entrySet())
// Ignore magic environment variables added by the launcher
if (! e.getKey().equals("NLSPATH") &&
@@ -1625,7 +1626,7 @@ public class Basic {
childArgs.add("System.getenv()");
String[] cmdp = childArgs.toArray(new
String[childArgs.size()]);
String[] envp;
- String[] envpWin = {"=ExitValue=3", "=C:=\\",
"SystemRoot="+systemRoot};
+ String[] envpWin = {"=C:=\\", "=ExitValue=3",
"SystemRoot="+systemRoot};
String[] envpOth = {"=ExitValue=3", "=C:=\\"};
if (Windows.is()) {
envp = envpWin;
@@ -1633,7 +1634,7 @@ public class Basic {
envp = envpOth;
}
Process p = Runtime.getRuntime().exec(cmdp, envp);
- String expected = Windows.is() ?
"=C:=\\,SystemRoot="+systemRoot+",=ExitValue=3," : "=C:=\\,";
+ String expected = Windows.is() ?
"=C:=\\,=ExitValue=3,SystemRoot="+systemRoot+"," : "=C:=\\,";
String commandOutput = commandOutput(p);
if (MacOSX.is()) {
commandOutput = removeMacExpectedVars(commandOutput);
@@ -1690,7 +1691,7 @@ public class Basic {
commandOutput = removeMacExpectedVars(commandOutput);
}
check(commandOutput.equals(Windows.is()
- ? "SystemRoot="+systemRoot+",LC_ALL=C,"
+ ? "LC_ALL=C,SystemRoot="+systemRoot+","
: "LC_ALL=C,"),
"Incorrect handling of envstrings containing NULs");
} catch (Throwable t) { unexpected(t); }
More information about the core-libs-dev
mailing list