7124443: (launcher) test DefaultsLocaleTest fails with Windows shells.
Reviewed-by: darcy
--- a/jdk/test/tools/launcher/DefaultLocaleTest.java Tue Jan 03 08:27:37 2012 -0800
+++ b/jdk/test/tools/launcher/DefaultLocaleTest.java Tue Jan 03 08:33:30 2012 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,22 +21,55 @@
* questions.
*/
-import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+import static java.nio.file.Files.*;
+import static java.nio.file.StandardOpenOption.*;
public class DefaultLocaleTest {
- public static void main(String[] args) {
- String setting =
+
+ static final String setting =
"language:" + System.getProperty("user.language") + "_" +
"country:" + System.getProperty("user.country") + "_" +
"encoding:" + System.getProperty("file.encoding") + "_" +
"jnuEncoding:"+ System.getProperty("sun.jnu.encoding");
- if (args.length != 0) {
- if (!setting.equals(args[0])) {
- System.exit(1);
+
+ public static void main(String[] args) throws IOException {
+ if (args != null && args.length > 1) {
+ File f = new File(args[1]);
+ switch (args[0]) {
+ case "-r":
+ System.out.println("reading file: " + args[1]);
+ String str = null;
+ try (BufferedReader in = newBufferedReader(f.toPath(),
+ Charset.defaultCharset())) {
+ str = in.readLine().trim();
+ }
+ if (setting.equals(str)) {
+ System.out.println("Compared ok");
+ } else {
+ System.out.println("Compare fails");
+ System.out.println("EXPECTED: " + setting);
+ System.out.println("OBTAINED: " + str);
+ throw new RuntimeException("Test fails: compare failed");
+ }
+ break;
+ case "-w":
+ System.out.println("writing file: " + args[1]);
+ try (BufferedWriter out = newBufferedWriter(f.toPath(),
+ Charset.defaultCharset(), CREATE_NEW)) {
+ out.write(setting);
+ }
+ break;
+ default:
+ throw new RuntimeException("ERROR: invalid arguments");
}
} else {
- System.out.println(setting);
+ throw new RuntimeException("ERROR: invalid arguments");
}
- System.exit(0);
- }
+ }
}
--- a/jdk/test/tools/launcher/DefaultLocaleTest.sh Tue Jan 03 08:27:37 2012 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 4958170 4891531 4989534
-# @summary Test to see if default java locale settings are identical
-# when launch jvm from java and javaw respectively. Test
-# should be run on Windows with different user locale and
-# system locale setting in ControlPanel's RegionSetting.
-# Following 2 testing scenarios are recommended
-# (1)systemLocale=Japanese, userLocale=English
-# (2)systemLocale=English, userLocale=Japanese
-# @run shell DefaultLocaleTest.sh
-#
-# Verify directory context variables are set
-if [ "${TESTJAVA}" = "" ]
-then
- echo "TESTJAVA not set. Test cannot execute. Failed."
- exit 1
-fi
-
-if [ "${TESTSRC}" = "" ]
-then
- echo "TESTSRC not set. Test cannot execute. Failed."
- exit 1
-fi
-
-OS=`uname`
-
-case "$OS" in
- Windows* )
- JAVAC="${TESTJAVA}/bin/javac -d . "
- JAVA="${TESTJAVA}/bin/java -classpath . "
- JAVAW="${TESTJAVA}/bin/javaw -classpath . "
-
- ${JAVAC} ${TESTSRC}/DefaultLocaleTest.java
- props=`${JAVA} DefaultLocaleTest`
- ${JAVAW} DefaultLocaleTest $props
- if [ $? -ne 0 ]
- then
- echo "Test fails"
- exit 1
- fi
- echo "Test passes"
- exit 0
- ;;
- CYGWIN* )
- JAVAC="${TESTJAVA}/bin/javac -d . "
- JAVA="${TESTJAVA}/bin/java -classpath . "
- JAVAW="${TESTJAVA}/bin/javaw -classpath . "
-
- ${JAVAC} ${TESTSRC}/DefaultLocaleTest.java
- ${JAVA} DefaultLocaleTest | sed -e s@\\r@@g > x.out
- ${JAVAW} DefaultLocaleTest `cat x.out`
- if [ $? -ne 0 ]
- then
- echo "Test fails"
- exit 1
- fi
- echo "Test passes"
- exit 0
- ;;
- * )
- echo "Non-windows environment; test vacuously succeeds."
- exit 0;
- ;;
-esac
-
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/launcher/DefaultLocaleTestRun.java Tue Jan 03 08:33:30 2012 -0800
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4958170 4891531 4989534
+ * @summary Test to see if default java locale settings are identical
+ when launch jvm from java and javaw respectively. Test
+ should be run on Windows with different user locale and
+ system locale setting in ControlPanel's RegionSetting.
+ Following 2 testing scenarios are recommended
+ (1)systemLocale=Japanese, userLocale=English
+ (2)systemLocale=English, userLocale=Japanese
+ * @compile -XDignore.symbol.file DefaultLocaleTest.java TestHelper.java
+ * @run main DefaultLocaleTestRun
+ */
+import java.io.File;
+
+public class DefaultLocaleTestRun {
+ public static void main(String... args) {
+ if (!TestHelper.isWindows) {
+ System.out.println("Test passes vacuously on non-windows");
+ return;
+ }
+ TestHelper.TestResult tr = null;
+ tr = TestHelper.doExec(TestHelper.javaCmd, "DefaultLocaleTest", "-w",
+ "x.out");
+ System.out.println(tr.testOutput);
+ tr = TestHelper.doExec(TestHelper.javawCmd, "DefaultLocaleTest", "-r",
+ "x.out");
+ System.out.println(tr.testOutput);
+ if (!tr.isOK()) {
+ throw new RuntimeException("Test failed");
+ }
+ }
+}
--- a/jdk/test/tools/launcher/TestHelper.java Tue Jan 03 08:27:37 2012 -0800
+++ b/jdk/test/tools/launcher/TestHelper.java Tue Jan 03 08:33:30 2012 -0800
@@ -49,6 +49,7 @@
static final String JAVAHOME = System.getProperty("java.home");
static final boolean isSDK = JAVAHOME.endsWith("jre");
static final String javaCmd;
+ static final String javawCmd;
static final String java64Cmd;
static final String javacCmd;
static final JavaCompiler compiler;
@@ -84,15 +85,29 @@
: new File(binDir, "java");
javaCmd = javaCmdFile.getAbsolutePath();
if (!javaCmdFile.canExecute()) {
- throw new RuntimeException("java <" + TestHelper.javaCmd + "> must exist");
+ throw new RuntimeException("java <" + TestHelper.javaCmd +
+ "> must exist and should be executable");
}
File javacCmdFile = (isWindows)
? new File(binDir, "javac.exe")
: new File(binDir, "javac");
javacCmd = javacCmdFile.getAbsolutePath();
+
+ if (isWindows) {
+ File javawCmdFile = new File(binDir, "javaw.exe");
+ javawCmd = javawCmdFile.getAbsolutePath();
+ if (!javawCmdFile.canExecute()) {
+ throw new RuntimeException("java <" + javawCmd +
+ "> must exist and should be executable");
+ }
+ } else {
+ javawCmd = null;
+ }
+
if (!javacCmdFile.canExecute()) {
- throw new RuntimeException("java <" + javacCmd + "> must exist");
+ throw new RuntimeException("java <" + javacCmd +
+ "> must exist and should be executable");
}
if (isSolaris) {
File sparc64BinDir = new File(binDir,isSparc ? "sparcv9" : "amd64");