7124443: (launcher) test DefaultsLocaleTest fails with Windows shells
Reviewed-by: darcy
This commit is contained in:
parent
3890c64b86
commit
6274287b95
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
56
jdk/test/tools/launcher/DefaultLocaleTestRun.java
Normal file
56
jdk/test/tools/launcher/DefaultLocaleTestRun.java
Normal file
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
@ -49,6 +49,7 @@ public enum TestHelper {
|
||||
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 @@ public enum TestHelper {
|
||||
: 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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user