提交 3d1dadfe 编写于 作者: K ksrini

7124443: (launcher) test DefaultsLocaleTest fails with Windows shells.

Reviewed-by: darcy
上级 40e28c36
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -21,22 +21,55 @@ ...@@ -21,22 +21,55 @@
* questions. * 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 class DefaultLocaleTest {
public static void main(String[] args) {
String setting = static final String setting =
"language:" + System.getProperty("user.language") + "_" + "language:" + System.getProperty("user.language") + "_" +
"country:" + System.getProperty("user.country") + "_" + "country:" + System.getProperty("user.country") + "_" +
"encoding:" + System.getProperty("file.encoding") + "_" + "encoding:" + System.getProperty("file.encoding") + "_" +
"jnuEncoding:"+ System.getProperty("sun.jnu.encoding"); "jnuEncoding:"+ System.getProperty("sun.jnu.encoding");
if (args.length != 0) {
if (!setting.equals(args[0])) { public static void main(String[] args) throws IOException {
System.exit(1); 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 { } else {
System.out.println(setting); throw new RuntimeException("ERROR: invalid arguments");
} }
System.exit(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
/*
* 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 { ...@@ -49,6 +49,7 @@ public enum TestHelper {
static final String JAVAHOME = System.getProperty("java.home"); static final String JAVAHOME = System.getProperty("java.home");
static final boolean isSDK = JAVAHOME.endsWith("jre"); static final boolean isSDK = JAVAHOME.endsWith("jre");
static final String javaCmd; static final String javaCmd;
static final String javawCmd;
static final String java64Cmd; static final String java64Cmd;
static final String javacCmd; static final String javacCmd;
static final JavaCompiler compiler; static final JavaCompiler compiler;
...@@ -84,15 +85,29 @@ public enum TestHelper { ...@@ -84,15 +85,29 @@ public enum TestHelper {
: new File(binDir, "java"); : new File(binDir, "java");
javaCmd = javaCmdFile.getAbsolutePath(); javaCmd = javaCmdFile.getAbsolutePath();
if (!javaCmdFile.canExecute()) { 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) File javacCmdFile = (isWindows)
? new File(binDir, "javac.exe") ? new File(binDir, "javac.exe")
: new File(binDir, "javac"); : new File(binDir, "javac");
javacCmd = javacCmdFile.getAbsolutePath(); 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()) { if (!javacCmdFile.canExecute()) {
throw new RuntimeException("java <" + javacCmd + "> must exist"); throw new RuntimeException("java <" + javacCmd +
"> must exist and should be executable");
} }
if (isSolaris) { if (isSolaris) {
File sparc64BinDir = new File(binDir,isSparc ? "sparcv9" : "amd64"); File sparc64BinDir = new File(binDir,isSparc ? "sparcv9" : "amd64");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册