# HG changeset patch # User ksrini # Date 1325608410 28800 # Node ID 7907324fed4ff729259935f8c0dbaea747130b21 # Parent 09b0c973114581b246b12703fa32aac73666d007 7124443: (launcher) test DefaultsLocaleTest fails with Windows shells. Reviewed-by: darcy diff -r 09b0c9731145 -r 7907324fed4f jdk/test/tools/launcher/DefaultLocaleTest.java --- 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); - } + } } diff -r 09b0c9731145 -r 7907324fed4f jdk/test/tools/launcher/DefaultLocaleTest.sh --- 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 - - - diff -r 09b0c9731145 -r 7907324fed4f jdk/test/tools/launcher/DefaultLocaleTestRun.java --- /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"); + } + } +} diff -r 09b0c9731145 -r 7907324fed4f jdk/test/tools/launcher/TestHelper.java --- 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");