提交 2c176d80 编写于 作者: K ksrini

7127906: (launcher) convert the launcher regression tests to java

Reviewed-by: darcy, naoto
上级 28ceef75
/*
* Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2012, 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
......@@ -26,7 +26,7 @@
* @bug 5030233 6214916 6356475 6571029 6684582 6742159 4459600 6758881 6753938
* 6894719 6968053 7067922
* @summary Argument parsing validation.
* @compile -XDignore.symbol.file Arrrghs.java TestHelper.java
* @compile -XDignore.symbol.file Arrrghs.java
* @run main Arrrghs
*/
......@@ -38,7 +38,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
public class Arrrghs {
public class Arrrghs extends TestHelper {
private Arrrghs(){}
/**
* This class provides various tests for arguments processing.
......@@ -62,7 +62,7 @@ public class Arrrghs {
* SIGH, On Windows all strings are quoted, we need to unwrap it
*/
private static String removeExtraQuotes(String in) {
if (TestHelper.isWindows) {
if (isWindows) {
// Trim the string and remove the enclosed quotes if any.
in = in.trim();
if (in.startsWith("\"") && in.endsWith("\"")) {
......@@ -82,7 +82,7 @@ public class Arrrghs {
String in = rd.readLine();
while (in != null) {
if (TestHelper.debug) System.out.println(in);
if (debug) System.out.println(in);
if (in.startsWith(Cookie)) {
String detectedArgument = removeExtraQuotes(in.substring(Cookie.length()));
if (expectedArguments.equals(detectedArgument)) {
......@@ -94,7 +94,7 @@ public class Arrrghs {
detectedArgument + "'");
}
// Return the value asap if not in debug mode.
if (!TestHelper.debug) {
if (!debug) {
rd.close();
istream.close();
return retval;
......@@ -125,7 +125,7 @@ public class Arrrghs {
* Quoting could cause dissimilar testArguments and expected arguments.
*/
static int doTest(String testArguments, String expectedPattern) {
ProcessBuilder pb = new ProcessBuilder(TestHelper.javaCmd,
ProcessBuilder pb = new ProcessBuilder(javaCmd,
VersionStr, testArguments);
Map<String, String> env = pb.environment();
......@@ -146,8 +146,7 @@ public class Arrrghs {
* These tests require that a JVM (any JVM) be installed in the system registry.
* If none is installed, skip this test.
*/
TestHelper.TestResult tr =
TestHelper.doExec(TestHelper.javaCmd, VersionStr, "-version");
TestResult tr = doExec(javaCmd, VersionStr, "-version");
if (!tr.isOK()) {
System.err.println("Warning:Argument Passing Tests were skipped, " +
"no java found in system registry.");
......@@ -155,38 +154,38 @@ public class Arrrghs {
}
// Basic test
TestHelper.testExitValue += doTest("-a -b -c -d");
testExitValue += doTest("-a -b -c -d");
// Basic test with many spaces
TestHelper.testExitValue += doTest("-a -b -c -d");
testExitValue += doTest("-a -b -c -d");
// Quoted whitespace does matter ?
TestHelper.testExitValue += doTest("-a \"\"-b -c\"\" -d");
testExitValue += doTest("-a \"\"-b -c\"\" -d");
// Escaped quotes outside of quotes as literals
TestHelper.testExitValue += doTest("-a \\\"-b -c\\\" -d");
testExitValue += doTest("-a \\\"-b -c\\\" -d");
// Check for escaped quotes inside of quotes as literal
TestHelper.testExitValue += doTest("-a \"-b \\\"stuff\\\"\" -c -d");
testExitValue += doTest("-a \"-b \\\"stuff\\\"\" -c -d");
// A quote preceeded by an odd number of slashes is a literal quote
TestHelper.testExitValue += doTest("-a -b\\\\\\\" -c -d");
testExitValue += doTest("-a -b\\\\\\\" -c -d");
// A quote preceeded by an even number of slashes is a literal quote
// see 6214916.
TestHelper.testExitValue += doTest("-a -b\\\\\\\\\" -c -d");
testExitValue += doTest("-a -b\\\\\\\\\" -c -d");
// Make sure that whitespace doesn't interfere with the removal of the
// appropriate tokens. (space-tab-space preceeds -jre-restict-search).
TestHelper.testExitValue += doTest("-a -b \t -jre-restrict-search -c -d","-a -b -c -d");
testExitValue += doTest("-a -b \t -jre-restrict-search -c -d","-a -b -c -d");
// Make sure that the mJRE tokens being stripped, aren't stripped if
// they happen to appear as arguments to the main class.
TestHelper.testExitValue += doTest("foo -version:1.1+");
testExitValue += doTest("foo -version:1.1+");
System.out.println("Completed arguments quoting tests with " +
TestHelper.testExitValue + " errors");
testExitValue + " errors");
}
/*
......@@ -194,156 +193,167 @@ public class Arrrghs {
*/
static void runBasicErrorMessageTests() {
// Tests for 5030233
TestHelper.TestResult tr = TestHelper.doExec(TestHelper.javaCmd, "-cp");
TestResult tr = doExec(javaCmd, "-cp");
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
tr = TestHelper.doExec(TestHelper.javaCmd, "-classpath");
tr = doExec(javaCmd, "-classpath");
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar");
tr = doExec(javaCmd, "-jar");
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
tr = TestHelper.doExec(TestHelper.javacCmd, "-cp");
tr = doExec(javacCmd, "-cp");
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
// Test for 6356475 "REGRESSION:"java -X" from cmdline fails"
tr = TestHelper.doExec(TestHelper.javaCmd, "-X");
tr = doExec(javaCmd, "-X");
tr.checkPositive();
tr.isNotZeroOutput();
System.out.println(tr);
tr = TestHelper.doExec(TestHelper.javaCmd, "-help");
tr = doExec(javaCmd, "-help");
tr.checkPositive();
tr.isNotZeroOutput();
System.out.println(tr);
// 6753938, test for non-negative exit value for an incorrectly formed
// command line, '% java'
tr = TestHelper.doExec(TestHelper.javaCmd);
tr = doExec(javaCmd);
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
// 6753938, test for non-negative exit value for an incorrectly formed
// command line, '% java -Xcomp'
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xcomp");
tr = doExec(javaCmd, "-Xcomp");
tr.checkNegative();
tr.isNotZeroOutput();
System.out.println(tr);
}
/*
* A set of tests which tests various dispositions of the main method.
* Tests various dispositions of the main method, these tests are limited
* to English locales as they check for error messages that are localized.
*/
static void runMainMethodTests() throws FileNotFoundException {
TestHelper.TestResult tr = null;
if (!isEnglishLocale()) {
return;
}
TestResult tr = null;
// a missing class
TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"),
createJar("MIA", new File("some.jar"), new File("Foo"),
(String[])null);
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("Error: Could not find or load main class MIA");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "MIA");
tr = doExec(javaCmd, "-cp", "some.jar", "MIA");
tr.contains("Error: Could not find or load main class MIA");
System.out.println(tr);
// incorrect method access
TestHelper.createJar(new File("some.jar"), new File("Foo"),
createJar(new File("some.jar"), new File("Foo"),
"private static void main(String[] args){}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("Error: Main method not found in class Foo");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "Foo");
tr = doExec(javaCmd, "-cp", "some.jar", "Foo");
tr.contains("Error: Main method not found in class Foo");
System.out.println(tr);
// incorrect return type
TestHelper.createJar(new File("some.jar"), new File("Foo"),
createJar(new File("some.jar"), new File("Foo"),
"public static int main(String[] args){return 1;}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("Error: Main method must return a value of type void in class Foo");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "Foo");
tr = doExec(javaCmd, "-cp", "some.jar", "Foo");
tr.contains("Error: Main method must return a value of type void in class Foo");
System.out.println(tr);
// incorrect parameter type
TestHelper.createJar(new File("some.jar"), new File("Foo"),
createJar(new File("some.jar"), new File("Foo"),
"public static void main(Object[] args){}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("Error: Main method not found in class Foo");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "Foo");
tr = doExec(javaCmd, "-cp", "some.jar", "Foo");
tr.contains("Error: Main method not found in class Foo");
System.out.println(tr);
// incorrect method type - non-static
TestHelper.createJar(new File("some.jar"), new File("Foo"),
createJar(new File("some.jar"), new File("Foo"),
"public void main(String[] args){}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("Error: Main method is not static in class Foo");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "Foo");
tr = doExec(javaCmd, "-cp", "some.jar", "Foo");
tr.contains("Error: Main method is not static in class Foo");
System.out.println(tr);
// amongst a potpourri of kindred main methods, is the right one chosen ?
TestHelper.createJar(new File("some.jar"), new File("Foo"),
createJar(new File("some.jar"), new File("Foo"),
"void main(Object[] args){}",
"int main(Float[] args){return 1;}",
"private void main() {}",
"private static void main(int x) {}",
"public int main(int argc, String[] argv) {return 1;}",
"public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.contains("THE_CHOSEN_ONE");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "Foo");
tr = doExec(javaCmd, "-cp", "some.jar", "Foo");
tr.contains("THE_CHOSEN_ONE");
System.out.println(tr);
// test for extraneous whitespace in the Main-Class attribute
TestHelper.createJar(" Foo ", new File("some.jar"), new File("Foo"),
createJar(" Foo ", new File("some.jar"), new File("Foo"),
"public static void main(String... args){}");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
tr = doExec(javaCmd, "-jar", "some.jar");
tr.checkPositive();
System.out.println(tr);
}
// tests 6968053, ie. we turn on the -Xdiag (for now) flag and check if
// the suppressed stack traces are exposed.
/*
* tests 6968053, ie. we turn on the -Xdiag (for now) flag and check if
* the suppressed stack traces are exposed, ignore these tests for localized
* locales, limiting to English only.
*/
static void runDiagOptionTests() throws FileNotFoundException {
TestHelper.TestResult tr = null;
if (!isEnglishLocale()) { // only english version
return;
}
TestResult tr = null;
// a missing class
TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"),
createJar("MIA", new File("some.jar"), new File("Foo"),
(String[])null);
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "-jar", "some.jar");
tr = doExec(javaCmd, "-Xdiag", "-jar", "some.jar");
tr.contains("Error: Could not find or load main class MIA");
tr.contains("java.lang.ClassNotFoundException: MIA");
System.out.println(tr);
// use classpath to check
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "-cp", "some.jar", "MIA");
tr = doExec(javaCmd, "-Xdiag", "-cp", "some.jar", "MIA");
tr.contains("Error: Could not find or load main class MIA");
tr.contains("java.lang.ClassNotFoundException: MIA");
System.out.println(tr);
// a missing class on the classpath
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "NonExistentClass");
tr = doExec(javaCmd, "-Xdiag", "NonExistentClass");
tr.contains("Error: Could not find or load main class NonExistentClass");
tr.contains("java.lang.ClassNotFoundException: NonExistentClass");
System.out.println(tr);
......@@ -351,23 +361,29 @@ public class Arrrghs {
static void test6894719() {
// test both arguments to ensure they exist
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd,
TestResult tr = null;
tr = doExec(javaCmd,
"-no-jre-restrict-search", "-version");
tr.checkPositive();
System.out.println(tr);
tr = TestHelper.doExec(TestHelper.javaCmd,
tr = doExec(javaCmd,
"-jre-restrict-search", "-version");
tr.checkPositive();
System.out.println(tr);
}
/*
* a missing manifest entry 7067922, we ignore this test for locales
* which are localized, thus the testing is limited to English locales.
*/
static void test7067922() {
// a missing manifest entry 7067922
TestHelper.TestResult tr = null;
TestHelper.createJar("cvf", "missingmainentry.jar", ".");
tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "missingmainentry.jar");
if (!isEnglishLocale()) {
return;
}
TestResult tr = null;
createJar("cvf", "missingmainentry.jar", ".");
tr = doExec(javaCmd, "-jar", "missingmainentry.jar");
tr.contains("no main manifest attribute");
System.out.println(tr);
}
......@@ -377,7 +393,7 @@ public class Arrrghs {
* @throws java.io.FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
if (TestHelper.debug) {
if (debug) {
System.out.println("Starting Arrrghs tests");
}
quoteParsingTests();
......@@ -386,8 +402,8 @@ public class Arrrghs {
test6894719();
test7067922();
runDiagOptionTests();
if (TestHelper.testExitValue > 0) {
System.out.println("Total of " + TestHelper.testExitValue + " failed");
if (testExitValue > 0) {
System.out.println("Total of " + testExitValue + " failed");
System.exit(1);
} else {
System.out.println("All tests pass");
......
/*
* Copyright (c) 2012, 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 4894330 4810347 6277269
* @compile -XDignore.symbol.file ChangeDataModel.java
* @run main ChangeDataModel
* @summary Verify -d32 and -d64 options are accepted(rejected) on all platforms
* @author Joseph D. Darcy, ksrini
*/
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class ChangeDataModel extends TestHelper {
private static final File TestJar = new File("test" + JAR_FILE_EXT);
private static final String OPT_PREFIX = "ARCH_OPT:";
public static void main(String... args) throws Exception {
String[] code = {
" public static void main(String argv[]) {",
" System.out.println(\"" + OPT_PREFIX + "-d\" + System.getProperty(\"sun.arch.data.model\", \"none\"));",
" }",
};
createJar(TestJar, code);
// verify if data model flag for default data model is accepted
if (is32Bit) {
checkAcceptance(javaCmd, "-d32");
} else if (is64Bit) {
checkAcceptance(javaCmd, "-d64");
} else {
throw new Error("unsupported data model");
}
// test dual mode systems
if (isDualMode) {
// albeit dual mode we may not have the 64 bit components present
if (dualModePresent()) {
// 32-bit -> 64-bit
checkExecCount(javaCmd, "-d64");
// 64-bit -> 32-bit
checkExecCount(java64Cmd, "-d32");
checkAcceptance(javaCmd, "-d64");
checkAcceptance(java64Cmd, "-d32");
} else {
System.out.println("Warning: no 64-bit components found;" +
" only one data model tested.");
}
} else {
// Negative tests: ensure that non-dual mode systems reject the
// complementary (other) data model
if (is32Bit) {
checkRejection(javaCmd, "-d64");
} else if (is64Bit) {
checkRejection(javaCmd, "-d32");
} else {
throw new Error("unsupported data model");
}
}
}
static void checkExecCount(String cmd, String dmodel) {
Map<String, String> envMap = new HashMap<>();
envMap.put(JLDEBUG_KEY, "true");
TestResult tr = doExec(envMap, javaCmd, "-d64",
"-jar", TestJar.getAbsolutePath());
int count = 0;
for (String x : tr.testOutput) {
if (x.contains(EXPECTED_MARKER)) {
count++;
if (count > 1) {
System.out.println(tr);
throw new RuntimeException("Maximum exec count of 1 execeeded");
}
}
}
}
static void checkAcceptance(String cmd, String dmodel) {
TestResult tr = doExec(cmd, dmodel, "-jar", TestJar.getAbsolutePath());
if (!tr.contains(OPT_PREFIX + dmodel)) {
System.out.println(tr);
String message = "Data model flag " + dmodel +
" not accepted or had improper effect.";
throw new RuntimeException(message);
}
}
static void checkRejection(String cmd, String dmodel) {
TestResult tr = doExec(cmd, dmodel, "-jar", TestJar.getAbsolutePath());
if (tr.contains(OPT_PREFIX + dmodel)) {
System.out.println(tr);
String message = "Data model flag " + dmodel + " was accepted.";
throw new RuntimeException(message);
}
}
}
#
# Copyright (c) 2003, 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 4894330 4810347 6277269
# @run shell ChangeDataModel.sh
# @summary Verify -d32 and -d64 options are accepted(rejected) on all platforms
# @author Joseph D. Darcy
OS=`uname -s`;
# To remove CR from output, needed for java apps in CYGWIN, harmless otherwise
SED_CR="sed -e s@\\r@@g"
case "$OS" in
Windows* | CYGWIN* )
PATHSEP=";"
;;
* )
PATHSEP=":"
;;
esac
# 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
if [ "${TESTCLASSES}" = "" ]
then
echo "TESTCLASSES not set. Test cannot execute. Failed."
exit 1
fi
# Construct paths to default Java executables
JAVA="$TESTJAVA/bin/java -classpath $TESTCLASSES${PATHSEP}."
JAVAC="$TESTJAVA/bin/javac"
# Create our little Java test on the fly
( printf "public class GetDataModel {"
printf " public static void main(String argv[]) {"
printf " System.out.println(System.getProperty(\"sun.arch.data.model\", \"none\"));"
printf " }"
printf "}"
) > GetDataModel.java
$JAVAC GetDataModel.java
# All preconditions are met; run the tests.
# Verify data model flag for default data model is accepted
DM=`$JAVA GetDataModel | ${SED_CR}`
case "$DM" in
32 )
DM2=`${JAVA} -d32 GetDataModel | ${SED_CR}`
if [ "${DM2}" != "32" ]
then
echo "Data model flag -d32 not accepted or had improper effect."
exit 1
fi
;;
64 )
DM2=`${JAVA} -d64 GetDataModel | ${SED_CR}`
if [ "${DM2}" != "64" ]
then
echo "Data model flag -d64 not accepted or had improper effect."
exit 1
fi
;;
* )
echo "Unrecognized data model: $DM"
exit 1
;;
esac
# Determine if platform might be dual-mode capable.
case "$OS" in
SunOS )
# ARCH should be sparc or i386
ARCH=`uname -p`
case "${ARCH}" in
sparc )
DUALMODE=true
PATH64=sparcv9
;;
i386 )
DUALMODE=true
PATH64=amd64
;;
* )
DUALMODE=false
;;
esac
;;
Linux )
# ARCH should be ia64, x86_64, or i*86
ARCH=`uname -m`
case "${ARCH}" in
ia64 )
DUALMODE=false
;;
x86_64 )
DUALMODE=true
PATH64=amd64
;;
* )
DUALMODE=false;
;;
esac
;;
Windows* | CYGWIN* )
ARCH=`uname -m`
case "${ARCH}" in
* )
DUALMODE=false;
;;
esac
;;
* )
echo "Warning: unknown environment."
DUALMODE=false
;;
esac
if [ "${DUALMODE}" = "true" ]
then
# Construct path to 64-bit Java executable, might not exist
JAVA64FILE="${TESTJAVA}/bin/${PATH64}/java"
JAVA64="${JAVA64FILE} -classpath ${TESTCLASSES}${PATHSEP}."
if [ -f ${JAVA64FILE} ]; then
# Verify that, at least on Solaris, only one exec is
# used to change data models
if [ "${OS}" = "SunOS" ]
then
rm -f truss.out
truss -texec ${JAVA} -d64 GetDataModel > /dev/null 2> truss.out
execCount=`grep -c execve truss.out`
if [ "${execCount}" -gt 2 ]
then
echo "Maximum exec count of 2 exceeded: got $execCount."
exit 1
fi
rm -f truss.out
truss -texec ${JAVA64} -d32 GetDataModel > /dev/null 2> truss.out
execCount=`grep -c execve truss.out`
if [ "${execCount}" -gt 2 ]
then
echo "Maximum exec count of 2 exceeded: got $execCount."
exit 1
fi
fi
DM2=`${JAVA} -d64 GetDataModel`
if [ "${DM2}" != "64" ]
then
echo "Data model flag -d64 not accepted or had improper effect."
exit 1
fi
DM2=`${JAVA64} GetDataModel`
if [ "${DM2}" != "64" ]
then
echo "Improper data model returned."
exit 1
fi
DM2=`${JAVA64} -d64 GetDataModel`
if [ "${DM2}" != "64" ]
then
echo "Data model flag -d64 not accepted or had improper effect."
exit 1
fi
DM2=`${JAVA64} -d32 GetDataModel`
if [ "${DM2}" != "32" ]
then
echo "Data model flag -d32 not accepted or had improper effect."
exit 1
fi
else
echo "Warning: no 64-bit components found; only one data model tested."
fi
else
# Negative tests for non-dual mode platforms to ensure the other data model is
# rejected
DM=`$JAVA GetDataModel | ${SED_CR}`
case "$DM" in
32 )
DM2=`${JAVA} -d64 GetDataModel | ${SED_CR}`
if [ "x${DM2}" != "x" ]
then
echo "Data model flag -d64 was accepted."
exit 1
fi
;;
64 )
DM2=`${JAVA} -d32 GetDataModel | ${SED_CR}`
if [ "x${DM2}" != "x" ]
then
echo "Data model flag -d32 was accepted."
exit 1
fi
;;
* )
echo "Unrecognized data model: $DM"
exit 1
;;
esac
fi
exit 0;
......@@ -31,23 +31,23 @@
Following 2 testing scenarios are recommended
(1)systemLocale=Japanese, userLocale=English
(2)systemLocale=English, userLocale=Japanese
* @compile -XDignore.symbol.file DefaultLocaleTest.java TestHelper.java
* @compile -XDignore.symbol.file DefaultLocaleTest.java
* @run main DefaultLocaleTestRun
*/
public class DefaultLocaleTestRun {
public class DefaultLocaleTestRun extends TestHelper {
public static void main(String... args) {
if (!TestHelper.isWindows) {
if (!isWindows) {
System.out.println("Test passes vacuously on non-windows");
return;
}
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd,
"-cp", TestHelper.TEST_CLASSES_DIR.getAbsolutePath(),
TestResult tr = null;
tr = doExec(javaCmd,
"-cp", TEST_CLASSES_DIR.getAbsolutePath(),
"DefaultLocaleTest", "-w", "x.out");
System.out.println(tr.testOutput);
tr = TestHelper.doExec(TestHelper.javawCmd,
"-cp", TestHelper.TEST_CLASSES_DIR.getAbsolutePath(),
tr = doExec(javawCmd,
"-cp", TEST_CLASSES_DIR.getAbsolutePath(),
"DefaultLocaleTest", "-r", "x.out");
System.out.println(tr.testOutput);
if (!tr.isOK()) {
......
/*
* Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2009, 2012, 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
......@@ -25,7 +25,7 @@
* @test
* @bug 4780570 4731671 6354700 6367077 6670965 4882974
* @summary Checks for LD_LIBRARY_PATH and execution on *nixes
* @compile -XDignore.symbol.file ExecutionEnvironment.java TestHelper.java
* @compile -XDignore.symbol.file ExecutionEnvironment.java
* @run main ExecutionEnvironment
*/
......@@ -60,7 +60,7 @@ import java.util.List;
import java.util.Map;
public class ExecutionEnvironment {
public class ExecutionEnvironment extends TestHelper {
static final String LD_LIBRARY_PATH = "LD_LIBRARY_PATH";
static final String LD_LIBRARY_PATH_32 = LD_LIBRARY_PATH + "_32";
static final String LD_LIBRARY_PATH_64 = LD_LIBRARY_PATH + "_64";
......@@ -70,9 +70,6 @@ public class ExecutionEnvironment {
static final String LD_LIBRARY_PATH_32_VALUE = "/Lawrence/Of/Arabia";
static final String LD_LIBRARY_PATH_64_VALUE = "/A/Passage/To/India";
static final String JLDEBUG_KEY = "_JAVA_LAUNCHER_DEBUG";
static final String EXPECTED_MARKER = "TRACER_MARKER:About to EXEC";
static final String[] LD_PATH_STRINGS = {
LD_LIBRARY_PATH + "=" + LD_LIBRARY_PATH_VALUE,
LD_LIBRARY_PATH_32 + "=" + LD_LIBRARY_PATH_32_VALUE,
......@@ -84,11 +81,11 @@ public class ExecutionEnvironment {
static int errors = 0;
static int passes = 0;
static final String LIBJVM = TestHelper.isWindows ? "jvm.dll" : "libjvm.so";
static final String LIBJVM = isWindows ? "jvm.dll" : "libjvm.so";
static void createTestJar() {
try {
List<String> codeList = new ArrayList<String>();
List<String> codeList = new ArrayList<>();
codeList.add("static void printValue(String name, boolean property) {\n");
codeList.add(" String value = (property) ? System.getProperty(name) : System.getenv(name);\n");
codeList.add(" System.out.println(name + \"=\" + value);\n");
......@@ -105,7 +102,7 @@ public class ExecutionEnvironment {
codeList.add(" printValue(\"" + LD_LIBRARY_PATH_64 + "\", false);\n");
codeList.add("}\n");
String[] clist = new String[codeList.size()];
TestHelper.createJar(testJarFile, codeList.toArray(clist));
createJar(testJarFile, codeList.toArray(clist));
} catch (FileNotFoundException fnfe) {
throw new RuntimeException(fnfe);
}
......@@ -117,16 +114,15 @@ public class ExecutionEnvironment {
* environment should be pristine.
*/
private static void ensureEcoFriendly() {
TestHelper.TestResult tr = null;
TestResult tr = null;
Map<String, String> env = new HashMap<String, String>();
Map<String, String> env = new HashMap<>();
for (String x : LD_PATH_STRINGS) {
String pairs[] = x.split("=");
env.put(pairs[0], pairs[1]);
}
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-jar",
testJarFile.getAbsolutePath());
tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
if (!tr.isNotZeroOutput()) {
System.out.println(tr);
......@@ -149,10 +145,9 @@ public class ExecutionEnvironment {
* data model
*/
static void ensureNoExec() {
Map<String, String> env = new HashMap<String, String>();
Map<String, String> env = new HashMap<>();
env.put(JLDEBUG_KEY, "true");
TestHelper.TestResult tr =
TestHelper.doExec(env, TestHelper.javaCmd, "-version");
TestResult tr = doExec(env, javaCmd, "-version");
if (tr.testOutput.contains(EXPECTED_MARKER)) {
System.out.println("FAIL: EnsureNoExecs: found expected warning <" +
EXPECTED_MARKER +
......@@ -176,25 +171,23 @@ public class ExecutionEnvironment {
*/
static void verifyJavaLibraryPath() {
TestHelper.TestResult tr = null;
TestResult tr = null;
Map<String, String> env = new HashMap<String, String>();
Map<String, String> env = new HashMap<>();
if (TestHelper.isLinux) {
if (isLinux) {
for (String x : LD_PATH_STRINGS) {
String pairs[] = x.split("=");
env.put(pairs[0], pairs[1]);
}
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-jar",
testJarFile.getAbsolutePath());
tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
verifyJavaLibraryPathGeneric(tr);
} else {
// no override
env.clear();
env.put(LD_LIBRARY_PATH, LD_LIBRARY_PATH_VALUE);
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-jar",
testJarFile.getAbsolutePath());
tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
verifyJavaLibraryPathGeneric(tr);
env.clear();
......@@ -206,53 +199,52 @@ public class ExecutionEnvironment {
// verify the override occurs, since we know the invocation always
// uses by default is 32-bit, therefore we also set the test
// expectation to be the same.
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-jar",
testJarFile.getAbsolutePath());
tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
verifyJavaLibraryPathOverride(tr, true);
// try changing the model from 32 to 64 bit
if (TestHelper.dualModePresent() && TestHelper.is32Bit) {
if (dualModePresent() && is32Bit) {
// verify the override occurs
env.clear();
for (String x : LD_PATH_STRINGS) {
String pairs[] = x.split("=");
env.put(pairs[0], pairs[1]);
}
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-d64", "-jar",
tr = doExec(env, javaCmd, "-d64", "-jar",
testJarFile.getAbsolutePath());
verifyJavaLibraryPathOverride(tr, false);
// no override
env.clear();
env.put(LD_LIBRARY_PATH, LD_LIBRARY_PATH_VALUE);
tr = TestHelper.doExec(env, TestHelper.javaCmd, "-jar",
tr = doExec(env, javaCmd, "-jar",
testJarFile.getAbsolutePath());
verifyJavaLibraryPathGeneric(tr);
}
// try changing the model from 64 to 32 bit
if (TestHelper.java64Cmd != null && TestHelper.is64Bit) {
if (java64Cmd != null && is64Bit) {
// verify the override occurs
env.clear();
for (String x : LD_PATH_STRINGS) {
String pairs[] = x.split("=");
env.put(pairs[0], pairs[1]);
}
tr = TestHelper.doExec(env, TestHelper.java64Cmd, "-d32", "-jar",
tr = doExec(env, java64Cmd, "-d32", "-jar",
testJarFile.getAbsolutePath());
verifyJavaLibraryPathOverride(tr, true);
// no override
env.clear();
env.put(LD_LIBRARY_PATH, LD_LIBRARY_PATH_VALUE);
tr = TestHelper.doExec(env, TestHelper.java64Cmd, "-d32", "-jar",
tr = doExec(env, java64Cmd, "-d32", "-jar",
testJarFile.getAbsolutePath());
verifyJavaLibraryPathGeneric(tr);
}
}
}
private static void verifyJavaLibraryPathGeneric(TestHelper.TestResult tr) {
private static void verifyJavaLibraryPathGeneric(TestResult tr) {
if (!tr.matches("java.library.path=.*" + LD_LIBRARY_PATH_VALUE + ".*")) {
System.out.print("FAIL: verifyJavaLibraryPath: ");
System.out.println(" java.library.path does not contain " +
......@@ -264,7 +256,7 @@ public class ExecutionEnvironment {
}
}
private static void verifyJavaLibraryPathOverride(TestHelper.TestResult tr,
private static void verifyJavaLibraryPathOverride(TestResult tr,
boolean is32Bit) {
// make sure the 32/64 bit value exists
if (!tr.matches("java.library.path=.*" +
......@@ -295,10 +287,10 @@ public class ExecutionEnvironment {
*/
static void verifyVmSelection() {
TestHelper.TestResult tr = null;
TestResult tr = null;
if (TestHelper.is32Bit) {
tr = TestHelper.doExec(TestHelper.javaCmd, "-client", "-version");
if (is32Bit) {
tr = doExec(javaCmd, "-client", "-version");
if (!tr.matches(".*Client VM.*")) {
System.out.println("FAIL: the expected vm -client did not launch");
System.out.println(tr);
......@@ -307,7 +299,7 @@ public class ExecutionEnvironment {
passes++;
}
}
tr = TestHelper.doExec(TestHelper.javaCmd, "-server", "-version");
tr = doExec(javaCmd, "-server", "-version");
if (!tr.matches(".*Server VM.*")) {
System.out.println("FAIL: the expected vm -server did not launch");
System.out.println(tr);
......@@ -321,14 +313,14 @@ public class ExecutionEnvironment {
* checks to see there is no extra libjvm.so than needed
*/
static void verifyNoSymLink() {
if (TestHelper.is64Bit) {
if (is64Bit) {
return;
}
File symLink = null;
String libPathPrefix = TestHelper.isSDK ? "jre/lib" : "/lib";
symLink = new File(TestHelper.JAVAHOME, libPathPrefix +
TestHelper.getJreArch() + "/" + LIBJVM);
String libPathPrefix = isSDK ? "jre/lib" : "/lib";
symLink = new File(JAVAHOME, libPathPrefix +
getJreArch() + "/" + LIBJVM);
if (symLink.exists()) {
System.out.println("FAIL: The symlink exists " +
symLink.getAbsolutePath());
......@@ -339,7 +331,7 @@ public class ExecutionEnvironment {
}
public static void main(String... args) throws Exception {
if (TestHelper.isWindows) {
if (isWindows) {
System.out.println("Warning: noop on windows");
return;
}
......
......@@ -26,7 +26,7 @@
* @bug 7125442
* @summary ensures a jar path as well as a class located in a path containing
* unicode characters are launched.
* @compile -XDignore.symbol.file I18NJarTest.java TestHelper.java
* @compile -XDignore.symbol.file I18NJarTest.java
* @run main/othervm I18NJarTest
*/
import java.io.File;
......@@ -48,7 +48,7 @@ import java.util.Locale;
* in its own VM (othervm mode), such that the ensuing tests can run unperturbed,
* regardless of the outcome.
*/
public class I18NJarTest {
public class I18NJarTest extends TestHelper {
private static final File cwd = new File(".");
private static final File dir = new File("\uFF66\uFF67\uFF68\uFF69");
private static final String encoding = System.getProperty("sun.jnu.encoding", "");
......@@ -78,7 +78,7 @@ public class I18NJarTest {
}
dir.mkdir();
File dirfile = new File(dir, "foo.jar");
TestHelper.createJar(dirfile,
createJar(dirfile,
"public static void main(String... args) {",
"System.out.println(\"Hello World\");",
"System.exit(0);",
......@@ -86,22 +86,20 @@ public class I18NJarTest {
// remove the class files, to ensure that the class is indeed picked up
// from the jar file and not from ambient classpath.
File[] classFiles = cwd.listFiles(TestHelper.createFilter(TestHelper.CLASS_FILE_EXT));
File[] classFiles = cwd.listFiles(createFilter(CLASS_FILE_EXT));
for (File f : classFiles) {
f.delete();
}
// test with a jar file
TestHelper.TestResult tr = TestHelper.doExec(TestHelper.javaCmd,
"-jar", dirfile.getAbsolutePath());
TestResult tr = doExec(javaCmd, "-jar", dirfile.getAbsolutePath());
System.out.println(tr);
if (!tr.isOK()) {
throw new RuntimeException("TEST FAILED");
}
// test the same class but by specifying it as a classpath
tr = TestHelper.doExec(TestHelper.javaCmd, "-cp",
dirfile.getAbsolutePath(), "Foo");
tr = doExec(javaCmd, "-cp", dirfile.getAbsolutePath(), "Foo");
System.out.println(tr);
if (!tr.isOK()) {
throw new RuntimeException("TEST FAILED");
......
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
......@@ -22,62 +22,68 @@
*/
/*
*
*
* This class is used by test i18nTest.sh
*
* Class to create various i18n Hello World Java source files using
* the platform's default encoding of a non-ASCII name; create plain
* ASCII Hello World if the platform's default is charset is US-ASCII.
* @test
* @bug 4761384
* @compile -XDignore.symbol.file I18NTest.java
* @run main I18NTest
* @summary Test to see if class files with non-ASCII characters can be run
* @author Joseph D. Darcy, Kumar Srinivasan
*/
import java.io.PrintWriter;
import java.io.FileOutputStream;
public class CreatePlatformFile {
public static void main(String argv[]) {
String fileSep = System.getProperty("file.separator");
String defaultEncoding = System.getProperty("file.encoding");
import java.util.ArrayList;
import java.io.File;
import java.util.List;
if(defaultEncoding == null) {
public class I18NTest extends TestHelper {
static String fileName = null;
public static void main(String... args) throws Exception {
String defaultEncoding = System.getProperty("file.encoding");
if (defaultEncoding == null) {
System.err.println("Default encoding not found; Error.");
return;
}
if (defaultEncoding.equals("Cp1252") ) {
// "HelloWorld" with an accented e
String fileName = "i18nH\u00e9lloWorld.java";
try {
PrintWriter pw = new PrintWriter(new FileOutputStream("."+fileSep+fileName));
pw.println("public class i18nH\u00e9lloWorld {");
pw.println(" public static void main(String [] argv) {");
pw.println(" System.out.println(\"Hello Cp1252 World\");");
pw.println(" }");
pw.println("}");
pw.flush();
pw.close();
if (!defaultEncoding.equals("Cp1252")) {
System.err.println("Warning: required encoding not found, test skipped.");
return;
}
// for some reason the shell test version insisted on cleaning out the
// directory, likely being pedantic.
File cwd = new File(".");
for (File f : cwd.listFiles(createFilter(CLASS_FILE_EXT))) {
f.delete();
}
catch (java.io.FileNotFoundException e) {
System.err.println("Problem opening file; test fails");
for (File f : cwd.listFiles(createFilter(JAVA_FILE_EXT))) {
f.delete();
}
createPlatformFile();
} else {
// ASCII "HelloWorld"
String fileName = "i18nHelloWorld.java";
try {
PrintWriter pw = new PrintWriter(new FileOutputStream("."+fileSep+fileName));
pw.println("public class i18nHelloWorld {");
pw.println(" public static void main(String [] argv) {");
pw.println(" System.out.println(\"Warning: US-ASCII assumed; filenames with\");");
pw.println(" System.out.println(\"non-ASCII characters will not be tested\");");
pw.println(" }");
pw.println("}");
pw.flush();
pw.close();
// compile the generate code using the javac compiler vs. the api, to
// as a bonus point to see if the argument is passed correctly
TestResult tr = null;
tr = doExec(javacCmd, fileName + JAVA_FILE_EXT);
if (!tr.isOK()) {
System.out.println(tr);
throw new Error("compilation failed...");
}
catch (java.io.FileNotFoundException e) {
System.err.println("Problem opening file; test fails");
tr = doExec(javaCmd, "-cp", ".", fileName);
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("run failed with encoding " + defaultEncoding);
}
}
public static void createPlatformFile() throws Exception {
List<String> buffer = new ArrayList<>();
// "HelloWorld" with an accented e
fileName = "i18nH\u00e9lloWorld";
buffer.clear();
buffer.add("public class i18nH\u00e9lloWorld {");
buffer.add(" public static void main(String [] argv) {");
buffer.add(" System.out.println(\"Hello Cp1252 World\");");
buffer.add(" }");
buffer.add("}");
File outFile = new File(fileName + JAVA_FILE_EXT);
createFile(outFile, buffer);
}
}
/*
* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2012, 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
......@@ -25,7 +25,7 @@
* @test
* @bug 6856415
* @summary Miscellaneous tests, Exceptions
* @compile -XDignore.symbol.file MiscTests.java TestHelper.java
* @compile -XDignore.symbol.file MiscTests.java
* @run main MiscTests
*/
......@@ -33,12 +33,12 @@
import java.io.File;
import java.io.FileNotFoundException;
public class MiscTests {
public class MiscTests extends TestHelper {
// 6856415: Checks to ensure that proper exceptions are thrown by java
static void test6856415() {
// No pkcs library on win-x64, so we bail out.
if (TestHelper.is64Bit && TestHelper.isWindows) {
if (is64Bit && isWindows) {
return;
}
StringBuilder sb = new StringBuilder();
......@@ -49,11 +49,11 @@ public class MiscTests {
File testJar = new File("Foo.jar");
testJar.delete();
try {
TestHelper.createJar(testJar, sb.toString());
createJar(testJar, sb.toString());
} catch (FileNotFoundException fnfe) {
throw new RuntimeException(fnfe);
}
TestHelper.TestResult tr = TestHelper.doExec(TestHelper.javaCmd,
TestResult tr = doExec(javaCmd,
"-Djava.security.manager", "-jar", testJar.getName(), "foo.bak");
for (String s : tr.testOutput) {
System.out.println(s);
......@@ -67,8 +67,8 @@ public class MiscTests {
public static void main(String... args) {
test6856415();
if (TestHelper.testExitValue != 0) {
throw new Error(TestHelper.testExitValue + " tests failed");
if (testExitValue != 0) {
throw new Error(testExitValue + " tests failed");
}
}
}
/*
* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2012, 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
......@@ -27,11 +27,11 @@ import java.io.IOException;
* @test
* @bug 6994753 7123582
* @summary tests -XshowSettings options
* @compile -XDignore.symbol.file Settings.java TestHelper.java
* @compile -XDignore.symbol.file Settings.java
* @run main Settings
* @author ksrini
*/
public class Settings {
public class Settings extends TestHelper {
private static File testJar = null;
static void init() throws IOException {
......@@ -45,17 +45,17 @@ public class Settings {
tsrc.append(" System.out.println(x);\n");
tsrc.append(" }\n");
tsrc.append("}\n");
TestHelper.createJar(testJar, tsrc.toString());
createJar(testJar, tsrc.toString());
}
static void checkContains(TestHelper.TestResult tr, String str) {
static void checkContains(TestResult tr, String str) {
if (!tr.contains(str)) {
System.out.println(tr);
throw new RuntimeException(str + " not found");
}
}
static void checkNoContains(TestHelper.TestResult tr, String str) {
static void checkNoContains(TestResult tr, String str) {
if (tr.contains(str)) {
System.out.println(tr.status);
throw new RuntimeException(str + " found");
......@@ -66,22 +66,22 @@ public class Settings {
private static final String PROP_SETTINGS = "Property settings:";
private static final String LOCALE_SETTINGS = "Locale settings:";
static void containsAllOptions(TestHelper.TestResult tr) {
static void containsAllOptions(TestResult tr) {
checkContains(tr, VM_SETTINGS);
checkContains(tr, PROP_SETTINGS);
checkContains(tr, LOCALE_SETTINGS);
}
static void runTestOptionDefault() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xms64m", "-Xmx512m",
TestResult tr = null;
tr = doExec(javaCmd, "-Xms64m", "-Xmx512m",
"-Xss128k", "-XshowSettings", "-jar", testJar.getAbsolutePath());
containsAllOptions(tr);
if (!tr.isOK()) {
System.out.println(tr.status);
throw new RuntimeException("test fails");
}
tr = TestHelper.doExec(TestHelper.javaCmd, "-Xms65536k", "-Xmx712m",
tr = doExec(javaCmd, "-Xms65536k", "-Xmx712m",
"-Xss122880", "-XshowSettings", "-jar", testJar.getAbsolutePath());
containsAllOptions(tr);
if (!tr.isOK()) {
......@@ -92,38 +92,38 @@ public class Settings {
static void runTestOptionAll() throws IOException {
init();
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettings:all");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettings:all");
containsAllOptions(tr);
}
static void runTestOptionVM() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettings:vm");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettings:vm");
checkContains(tr, VM_SETTINGS);
checkNoContains(tr, PROP_SETTINGS);
checkNoContains(tr, LOCALE_SETTINGS);
}
static void runTestOptionProperty() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettings:properties");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettings:properties");
checkNoContains(tr, VM_SETTINGS);
checkContains(tr, PROP_SETTINGS);
checkNoContains(tr, LOCALE_SETTINGS);
}
static void runTestOptionLocale() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettings:locale");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettings:locale");
checkNoContains(tr, VM_SETTINGS);
checkNoContains(tr, PROP_SETTINGS);
checkContains(tr, LOCALE_SETTINGS);
}
static void runTestBadOptions() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettingsBadOption");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettingsBadOption");
checkNoContains(tr, VM_SETTINGS);
checkNoContains(tr, PROP_SETTINGS);
checkNoContains(tr, LOCALE_SETTINGS);
......@@ -131,8 +131,8 @@ public class Settings {
}
static void runTest7123582() throws IOException {
TestHelper.TestResult tr = null;
tr = TestHelper.doExec(TestHelper.javaCmd, "-XshowSettings", "-version");
TestResult tr = null;
tr = doExec(javaCmd, "-XshowSettings", "-version");
if (!tr.isOK()) {
System.out.println(tr.status);
throw new RuntimeException("test fails");
......
/*
* Copyright (c) 2002, 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.
*/
/*
*
*
* Used by unresolvedExceptions.sh
*/
public class SomeException extends RuntimeException {
}
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, 2012, 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
......@@ -25,7 +25,7 @@
* @test
* @bug 7029048
* @summary Checks for LD_LIBRARY_PATH on *nixes
* @compile -XDignore.symbol.file ExecutionEnvironment.java TestHelper.java Test7029048.java
* @compile -XDignore.symbol.file ExecutionEnvironment.java Test7029048.java
* @run main Test7029048
*/
......@@ -42,7 +42,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test7029048 {
public class Test7029048 extends TestHelper {
static int passes = 0;
static int errors = 0;
......@@ -62,7 +62,7 @@ public class Test7029048 {
private static final File dstLibDir = new File("lib");
private static final File dstLibArchDir =
new File(dstLibDir, TestHelper.getJreArch());
new File(dstLibDir, getJreArch());
private static final File dstServerDir = new File(dstLibArchDir, "server");
private static final File dstServerLibjvm = new File(dstServerDir, LIBJVM);
......@@ -78,8 +78,8 @@ public class Test7029048 {
private static final Map<String, String> env = new HashMap<>();
static {
if (TestHelper.isDualMode) {
dstOtherArchDir = new File(dstLibDir, TestHelper.getComplementaryJreArch());
if (isDualMode) {
dstOtherArchDir = new File(dstLibDir, getComplementaryJreArch());
dstOtherServerDir = new File(dstOtherArchDir, "server");
dstOtherServerLibjvm = new File(dstOtherServerDir, LIBJVM);
} else {
......@@ -106,10 +106,10 @@ public class Test7029048 {
List<String> cmdsList = new ArrayList<>();
// only for a dual-mode system
if (want64 && TestHelper.isDualMode) {
cmdsList.add(TestHelper.java64Cmd);
if (want64 && isDualMode) {
cmdsList.add(java64Cmd);
} else {
cmdsList.add(TestHelper.javaCmd); // a 32-bit java command for all
cmdsList.add(javaCmd); // a 32-bit java command for all
}
/*
......@@ -127,18 +127,18 @@ public class Test7029048 {
cmdsList.add("-jar");
cmdsList.add(ExecutionEnvironment.testJarFile.getAbsolutePath());
String[] cmds = new String[cmdsList.size()];
TestHelper.TestResult tr = TestHelper.doExec(env, cmdsList.toArray(cmds));
TestResult tr = doExec(env, cmdsList.toArray(cmds));
analyze(tr, nLLPComponents, caseID);
}
// no cross launch, ie. no change to the data model.
static void run(Map<String, String> env, int nLLPComponents, String caseID)
throws IOException {
boolean want32 = TestHelper.is32Bit;
boolean want32 = is32Bit;
run(want32, null, env, nLLPComponents, caseID);
}
static void analyze(TestHelper.TestResult tr, int nLLPComponents, String caseID) {
static void analyze(TestResult tr, int nLLPComponents, String caseID) {
String envValue = getValue(LD_LIBRARY_PATH, tr.testOutput);
/*
* the envValue can never be null, since the test code should always
......@@ -189,12 +189,12 @@ public class Test7029048 {
switch (v) {
case LLP_SET_WITH_JVM:
// copy the files into the directory structures
TestHelper.copyFile(srcLibjvmSo, dstServerLibjvm);
copyFile(srcLibjvmSo, dstServerLibjvm);
// does not matter if it is client or a server
TestHelper.copyFile(srcLibjvmSo, dstClientLibjvm);
copyFile(srcLibjvmSo, dstClientLibjvm);
// does not matter if the arch do not match either
if (TestHelper.isDualMode) {
TestHelper.copyFile(srcLibjvmSo, dstOtherServerLibjvm);
if (isDualMode) {
copyFile(srcLibjvmSo, dstOtherServerLibjvm);
}
desc = "LD_LIBRARY_PATH should be set";
break;
......@@ -211,7 +211,7 @@ public class Test7029048 {
Files.deleteIfExists(dstServerLibjvm.toPath());
}
if (TestHelper.isDualMode) {
if (isDualMode) {
if (!dstOtherServerDir.exists()) {
Files.createDirectories(dstOtherServerDir.toPath());
} else {
......@@ -223,7 +223,7 @@ public class Test7029048 {
break;
case LLP_SET_NON_EXISTENT_PATH:
if (dstLibDir.exists()) {
TestHelper.recursiveDelete(dstLibDir);
recursiveDelete(dstLibDir);
}
desc = "LD_LIBRARY_PATH should not be set";
break;
......@@ -245,18 +245,18 @@ public class Test7029048 {
env.put(LD_LIBRARY_PATH, dstClientDir.getAbsolutePath());
run(env, v.value + 1, "Case 2: " + desc);
if (!TestHelper.isDualMode) {
if (!isDualMode) {
continue; // nothing more to do for Linux
}
// Tests applicable only to solaris.
// initialize test variables for dual mode operations
final File dst32ServerDir = TestHelper.is32Bit
final File dst32ServerDir = is32Bit
? dstServerDir
: dstOtherServerDir;
final File dst64ServerDir = TestHelper.is64Bit
final File dst64ServerDir = is64Bit
? dstServerDir
: dstOtherServerDir;
......@@ -268,7 +268,7 @@ public class Test7029048 {
env.clear();
env.put(LD_LIBRARY_PATH_32, dst32ServerDir.getAbsolutePath());
env.put(LD_LIBRARY_PATH_64, dst64ServerDir.getAbsolutePath());
run(TestHelper.is32Bit, null, env, v.value + 1, "Case 3: " + desc);
run(is32Bit, null, env, v.value + 1, "Case 3: " + desc);
/*
* Case 4: we are in dual mode environment, running 64-bit then
......@@ -276,7 +276,7 @@ public class Test7029048 {
* java32 -d64, LLP_64 is relevant, LLP_32 is ignored
* java64 -d32, LLP_32 is relevant, LLP_64 is ignored
*/
if (TestHelper.dualModePresent()) {
if (dualModePresent()) {
run(true, "-d64", env, v.value + 1, "Case 4A: " + desc);
run(false,"-d32", env, v.value + 1, "Case 4B: " + desc);
}
......@@ -285,7 +285,7 @@ public class Test7029048 {
}
public static void main(String... args) throws Exception {
if (TestHelper.isWindows) {
if (isWindows) {
System.out.println("Warning: noop on windows");
return;
}
......@@ -297,13 +297,13 @@ public class Test7029048 {
if (errors > 0) {
throw new Exception("Test7029048: FAIL: with "
+ errors + " errors and passes " + passes);
} else if (TestHelper.dualModePresent() && passes < 15) {
} else if (dualModePresent() && passes < 15) {
throw new Exception("Test7029048: FAIL: " +
"all tests did not run, expected " + 15 + " got " + passes);
} else if (TestHelper.isSolaris && passes < 9) {
} else if (isSolaris && passes < 9) {
throw new Exception("Test7029048: FAIL: " +
"all tests did not run, expected " + 9 + " got " + passes);
} else if (TestHelper.isLinux && passes < 6) {
} else if (isLinux && passes < 6) {
throw new Exception("Test7029048: FAIL: " +
"all tests did not run, expected " + 6 + " got " + passes);
} else {
......
......@@ -29,6 +29,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.nio.charset.Charset;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.Files;
import java.nio.file.FileVisitResult;
......@@ -36,17 +37,18 @@ import java.nio.file.SimpleFileVisitor;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import static java.nio.file.StandardCopyOption.*;
import static java.nio.file.StandardOpenOption.*;
/**
* This class provides some common utilities for the launcher tests.
*/
public enum TestHelper {
INSTANCE;
public class TestHelper {
// commonly used jtreg constants
static final File TEST_CLASSES_DIR;
static final File TEST_SOURCES_DIR;
......@@ -73,9 +75,14 @@ public enum TestHelper {
static final boolean isDualMode = isSolaris;
static final boolean isSparc = System.getProperty("os.arch").startsWith("sparc");
// make a note of the golden default locale
static final Locale DefaultLocale = Locale.getDefault();
static final String JAVA_FILE_EXT = ".java";
static final String CLASS_FILE_EXT = ".class";
static final String JAR_FILE_EXT = ".jar";
static final String JLDEBUG_KEY = "_JAVA_LAUNCHER_DEBUG";
static final String EXPECTED_MARKER = "TRACER_MARKER:About to EXEC";
static int testExitValue = 0;
......@@ -196,6 +203,19 @@ public enum TestHelper {
createJar(null, jarName, mainClass, mainDefs);
}
/*
* A convenience method to compile java files.
*/
static void compile(String... compilerArgs) {
if (compiler.run(null, null, null, compilerArgs) != 0) {
String sarg = "";
for (String x : compilerArgs) {
sarg.concat(x + " ");
}
throw new Error("compilation failed: " + sarg);
}
}
/*
* A generic jar file creator to create a java file, compile it
* and jar it up, a specific Main-Class entry name in the
......@@ -255,6 +275,11 @@ public enum TestHelper {
Files.copy(src.toPath(), dst.toPath(), COPY_ATTRIBUTES, REPLACE_EXISTING);
}
static void createFile(File outFile, List<String> content) throws IOException {
Files.write(outFile.getAbsoluteFile().toPath(), content,
Charset.defaultCharset(), CREATE_NEW);
}
static void recursiveDelete(File target) throws IOException {
if (!target.exists()) {
return;
......@@ -337,6 +362,10 @@ public enum TestHelper {
};
}
static boolean isEnglishLocale() {
return Locale.getDefault().getLanguage().equals("en");
}
/*
* A class to encapsulate the test results and stuff, with some ease
* of use methods to check the test results.
......
/*
* Copyright (c) 2007, 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.
*/
/*
*
*
* Used by UnicodeTest.sh.
*
* Recursively deletes the given file/directory and its contents.
* Equivalent to "rm -rf args...", but on NT-based Windows can
* handle files with full Unicode names inside the given directories
* while shells are generally limited to names using the system encoding.
*
* @author Norbert Lindenberg
*/
import java.io.File;
public class UnicodeCleanup {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
delete(new File(args[i]));
}
}
private static void delete(File file) {
// paranoia is healthy in rm -rf
String name = file.toString();
if (name.equals(".") || name.equals("..") ||
name.endsWith(File.separator + ".") ||
name.endsWith(File.separator + "..")) {
throw new RuntimeException("too risky to process: " + name);
}
if (file.isDirectory()) {
File[] contents = file.listFiles();
for (int i = 0; i < contents.length; i++) {
delete(contents[i]);
}
}
if (!file.delete()) {
throw new RuntimeException("Unable to delete " + file);
}
}
}
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2012, 2012 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,12 +21,18 @@
* questions.
*/
/*
* @test
* @bug 5030265
* @compile -XDignore.symbol.file UnicodeTest.java
* @run main/othervm UnicodeTest
* @summary Verify that the J2RE can handle all legal Unicode characters
* in class names unless limited by the file system encoding
* or the encoding used for command line arguments.
* @author Norbert Lindenberg, ksrini
*/
/*
*
*
* Used by UnicodeTest.sh.
*
* This class creates Java source files using Unicode characters
* that test the limits of what's possible
* - in situations where the platform encoding imposes limits
......@@ -35,38 +41,126 @@
* (file system access in UTF-8 locales and on Windows 2000++,
* jar file contents)
*
* @author Norbert Lindenberg
* This test needs to be run in othervm as the locale is reset.
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.Locale;
public class UnicodeTest {
public class UnicodeTest extends TestHelper {
static final File UnicodeTestSrc = new File("UnicodeTest-src");
static final File UnicodeTestClasses = new File("UnicodeTest-classes");
static final String UnicodeTestJarName = "UnicodeTest" + JAR_FILE_EXT;
static final File UnicodeTestJar = new File(UnicodeTestJarName);
static final File SolarisUnicodeTestJar = new File(TEST_SOURCES_DIR,
UnicodeTestJarName);
/*
* the main method is a port of the shell based test to a java, this
* eliminates the need for MKS on windows, thus we can rely on consistent
* results regardless of the shell being used.
*/
public static void main(String... args) throws Exception {
System.out.println("creating test source files");
UnicodeTestSrc.mkdirs();
UnicodeTestClasses.mkdirs();
String classname = generateSources();
File javaFile = new File(UnicodeTestSrc, classname + JAVA_FILE_EXT);
System.out.println("building test apps");
compile("-encoding", "UTF-8",
"-sourcepath", UnicodeTestSrc.getAbsolutePath(),
"-d", UnicodeTestClasses.getAbsolutePath(),
javaFile.getAbsolutePath());
public static void main(String[] args) throws Exception {
createJar("-cvfm", UnicodeTestJar.getAbsolutePath(),
new File(UnicodeTestSrc, "MANIFEST.MF").getAbsolutePath(),
"-C", UnicodeTestClasses.getAbsolutePath(), ".");
if (!UnicodeTestJar.exists()) {
throw new Error("failed to create " + UnicodeTestJar.getAbsolutePath());
}
System.out.println("running test app using class file");
TestResult tr = doExec(javaCmd,
"-cp", UnicodeTestClasses.getAbsolutePath(), classname);
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("test fails");
}
System.out.println("delete generated files with non-ASCII names");
recursiveDelete(UnicodeTestSrc);
recursiveDelete(UnicodeTestClasses);
/*
* test in whatever the default locale is
*/
runJarTests();
/*
* if the Japanese locale is available, test in that locale as well
*/
if (setLocale(Locale.JAPANESE)) {
runJarTests();
}
/*
* if we can switch to a C locale, then test whether jar files with
* non-ASCII characters in the manifest still work in this crippled
* environment
*/
if (setLocale(Locale.ENGLISH)) {
runJarTests();
}
// thats it we are outta here
}
static void runJarTests() {
System.out.println("running test app using newly built jar file in " +
Locale.getDefault());
runTest(UnicodeTestJar);
System.out.println("running test app using jar file " +
"(built with Solaris UTF-8 locale) in " + Locale.getDefault());
runTest(SolarisUnicodeTestJar);
}
static void runTest(File testJar) {
TestResult tr = doExec(javaCmd, "-jar", testJar.getAbsolutePath());
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("test fails");
}
}
static boolean setLocale(Locale desired) {
if (Locale.getDefault().equals(desired)) {
return true; // already set nothing more
}
for (Locale l : Locale.getAvailableLocales()) {
if (l == desired) {
Locale.setDefault(l);
return true;
}
}
return false;
}
static String generateSources() throws Exception {
String commandLineClassNameSuffix = commandLineClassNameSuffix();
String commandLineClassName = "ClassA" + commandLineClassNameSuffix;
String manifestClassName;
if (hasUnicodeFileSystem()) {
manifestClassName = "ClassB" + unicode;
} else {
manifestClassName = "ClassB" + commandLineClassNameSuffix;
}
String manifestClassName = "ClassB" +
(hasUnicodeFileSystem() ? unicode : commandLineClassNameSuffix);
generateSource(commandLineClassName, manifestClassName);
generateSource(manifestClassName, commandLineClassName);
generateManifest(manifestClassName);
System.out.println(commandLineClassName);
return commandLineClassName;
}
private static final String fileSeparator = System.getProperty("file.separator");
private static final String osName = System.getProperty("os.name");
private static final String defaultEncoding = Charset.defaultCharset().name();
// language names taken from java.util.Locale.getDisplayLanguage for the respective language
......@@ -132,12 +226,7 @@ public class UnicodeTest {
{ "tis-620", thai, null },
};
int column;
if (osName.startsWith("Windows")) {
column = 2;
} else {
column = 1;
}
int column = isWindows ? 2 : 1;
for (int i = 0; i < names.length; i++) {
if (names[i][0].equalsIgnoreCase(defaultEncoding)) {
return names[i][column];
......@@ -147,17 +236,12 @@ public class UnicodeTest {
}
private static boolean hasUnicodeFileSystem() {
if (osName.startsWith("Windows")) {
return ! osName.startsWith("Windows 9") &&
! osName.equals("Windows Me");
} else {
return defaultEncoding.equalsIgnoreCase("UTF-8");
}
return (isWindows) ? true : defaultEncoding.equalsIgnoreCase("UTF-8");
}
private static void generateSource(String thisClass, String otherClass) throws Exception {
String fileName = "UnicodeTest-src" + fileSeparator + thisClass + ".java";
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");
File file = new File(UnicodeTestSrc, thisClass + JAVA_FILE_EXT);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
out.write("public class " + thisClass + " {\n");
out.write(" public static void main(String[] args) {\n");
out.write(" if (!" + otherClass + "." + otherClass.toLowerCase() + "().equals(\"" + otherClass + "\")) {\n");
......@@ -172,8 +256,8 @@ public class UnicodeTest {
}
private static void generateManifest(String mainClass) throws Exception {
String fileName = "UnicodeTest-src" + fileSeparator + "MANIFEST.MF";
FileOutputStream out = new FileOutputStream(fileName);
File file = new File(UnicodeTestSrc, "MANIFEST.MF");
FileOutputStream out = new FileOutputStream(file);
out.write("Manifest-Version: 1.0\n".getBytes("UTF-8"));
// Header lines are limited to 72 bytes.
// The manifest spec doesn't say we have to break at character boundaries,
......
# Copyright (c) 2007, 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 5030265
# @summary Verify that the J2RE can handle all legal Unicode characters
# in class names unless limited by the file system encoding
# or the encoding used for command line arguments.
# @author Norbert Lindenberg
# 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
if [ "${TESTCLASSES}" = "" ]
then
echo "TESTCLASSES not set. Test cannot execute. Failed."
exit 1
fi
JAVAC="${TESTJAVA}"/bin/javac
JAVA="${TESTJAVA}"/bin/java
JAR="${TESTJAVA}"/bin/jar
mkdir UnicodeTest-src UnicodeTest-classes
echo "creating test source files"
"$JAVAC" -d . "${TESTSRC}"/UnicodeTest.java
if [ "`uname -s | grep CYGWIN`" != "" ] ; then
CLASS_NAME=`"$JAVA" UnicodeTest | sed -e 's@\\r@@g' `
else
CLASS_NAME=`"$JAVA" UnicodeTest`
fi
if [ "$CLASS_NAME" = "" ]
then
echo "CLASS_NAME not generated. Test failed."
exit 1
fi
echo "building test apps"
"$JAVAC" -encoding UTF-8 -sourcepath UnicodeTest-src \
-d UnicodeTest-classes UnicodeTest-src/"${CLASS_NAME}".java || exit 1
"$JAR" -cvfm UnicodeTest.jar UnicodeTest-src/MANIFEST.MF \
-C UnicodeTest-classes . || exit 1
echo "running test app using class file"
"$JAVA" -classpath UnicodeTest-classes "$CLASS_NAME" || exit 1
echo "delete generated files with non-ASCII names"
# do it now because on Unix they may not be accessible when locale changes
# do it in Java because shells on Windows can't handle full Unicode
"$JAVAC" -d . "${TESTSRC}"/UnicodeCleanup.java || exit 1
"$JAVA" UnicodeCleanup UnicodeTest-src UnicodeTest-classes || exit 1
echo "running test app using newly built jar file"
"$JAVA" -jar UnicodeTest.jar || exit 1
echo "running test app using jar file built in Solaris UTF-8 locale"
"$JAVA" -jar "${TESTSRC}"/UnicodeTest.jar || exit 1
# if we can switch to a C locale, then test whether jar files with
# non-ASCII characters in the manifest still work in this crippled
# environment
if test -n "`locale -a 2>/dev/null | grep '^C$'`"
then
LC_ALL=C
export LC_ALL
echo "running test app using newly built jar file in C locale"
"$JAVA" -jar UnicodeTest.jar || exit 1
echo "running test app using premade jar file in C locale"
"$JAVA" -jar "${TESTSRC}"/UnicodeTest.jar || exit 1
fi
exit 0
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2012, 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
......@@ -22,15 +22,39 @@
*/
/*
*
*
* Used by unresolvedExceptions.sh
* @test
* @bug 4529320
* @compile -XDignore.symbol.file UnresolvedExceptions.java
* @run main UnresolvedExceptions
* @summary Verifying jvm won't segv if exception not available
* @author Joseph D. Darcy, ksrini
*/
public class UnresolvedExceptions {
public static void main(String[] argv) throws SomeException {
// main is invoked from a shell so calling exit won't stop all
// tests.
System.exit(0);
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class UnresolvedExceptions extends TestHelper {
public static void main(String... args) throws Exception {
final String fname = "Foo";
List<String> buffer = new ArrayList<>();
buffer.add("public class " + fname + " {");
buffer.add(" public static void main(String[] argv) throws "
+ "Foo.SomeException {");
buffer.add(" System.exit(0);");
buffer.add(" }");
buffer.add(" static class SomeException extends RuntimeException{}");
buffer.add("}");
File testJavaFile = new File("Foo" + JAVA_FILE_EXT);
createFile(testJavaFile, buffer);
compile(testJavaFile.getName());
TestResult tr = doExec(javaCmd, "-cp", ".", fname);
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("java -cp ... failed");
}
}
}
#
# Copyright (c) 2002, 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.
#
#
#
# This file is used by test i18nTest.sh; this file is called to use
# shell globbing to delete Java source and class files whose names
# include non-ASCII characters.
# 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
if [ "${TESTCLASSES}" = "" ]
then
echo "TESTCLASSES not set. Test cannot execute. Failed."
exit 1
fi
rm -f i18n*.java
rm -f i18n*.class
#
# Copyright (c) 2002, 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 4761384
# @run shell deleteI18n.sh
# @build CreatePlatformFile
# @run main CreatePlatformFile
# @run shell i18nTest.sh
# @summary Test to see if class files with non-ASCII characters can be run
# @author Joseph D. Darcy
# 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
if [ "${TESTCLASSES}" = "" ]
then
echo "TESTCLASSES not set. Test cannot execute. Failed."
exit 1
fi
JAVAC="${TESTJAVA}/bin/javac -d . "
JAVA="${TESTJAVA}/bin/java -classpath . "
NAME=`ls i18n*.java | sed s/.java//`
echo $NAME
$JAVAC ${NAME}.java
RESULT=$?
case "$RESULT" in
0 )
;;
* )
echo "Compile of i18n*.java failed."
exit 1
esac
$JAVA ${NAME}
RESULT=$?
case "$RESULT" in
0 )
exit 0;
;;
* )
echo "Class $NAME did not run successfully."
exit 1
esac
#
# Copyright (c) 2002, 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 4529320
# @build SomeException
# @build UnresolvedExceptions
# @clean SomeException
# @run shell/timeout=60 unresolvedExceptions.sh
# @summary Verifying jvm won't segv if exception not available
# @author Joseph D. Darcy
# 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
if [ "${TESTCLASSES}" = "" ]
then
echo "TESTCLASSES not set. Test cannot execute. Failed."
exit 1
fi
JAVA="${TESTJAVA}/bin/java"
$JAVA -classpath ${TESTCLASSES} UnresolvedExceptions
RESULT=$?
case "$RESULT" in
0 | 1 )
exit 0;
;;
* )
exit 1
esac
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册