8295239: Refactor java/util/Formatter/Basic script into a Java native test launcher
Reviewed-by: lancea, bchristi, naoto
This commit is contained in:
parent
f5dabf9440
commit
902162ca9f
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2022, 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,18 +21,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
* @summary Unit test for formatter
|
||||
* @bug 4906370 4962433 4973103 4989961 5005818 5031150 4970931 4989491 5002937
|
||||
* 5005104 5007745 5061412 5055180 5066788 5088703 6317248 6318369 6320122
|
||||
* 6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168
|
||||
* 8059175 8204229
|
||||
*
|
||||
* @run shell/timeout=240 Basic.sh
|
||||
*/
|
||||
|
||||
import static java.lang.System.out;
|
||||
|
||||
public class Basic {
|
||||
|
||||
private static int fail = 0;
|
||||
@ -45,18 +33,20 @@ public class Basic {
|
||||
}
|
||||
|
||||
static void fail(String fs, Class ex) {
|
||||
String s = "'" + fs + "': " + ex.getName() + " not thrown";
|
||||
if (first == null)
|
||||
setFirst(s);
|
||||
System.err.println("FAILED: " + s);
|
||||
String message = "'%s': %s not thrown".formatted(fs, ex.getName());
|
||||
if (first == null) {
|
||||
setFirst(message);
|
||||
}
|
||||
System.err.printf("FAILED: %s%n", message);
|
||||
fail++;
|
||||
}
|
||||
|
||||
static void fail(String fs, String exp, String got) {
|
||||
String s = "'" + fs + "': Expected '" + exp + "', got '" + got + "'";
|
||||
if (first == null)
|
||||
setFirst(s);
|
||||
System.err.println("FAILED: " + s);
|
||||
String message = "'%s': Expected '%s', got '%s'".formatted(fs, exp, got);
|
||||
if (first == null) {
|
||||
setFirst(message);
|
||||
}
|
||||
System.err.printf("FAILED: %s%n", message);
|
||||
fail++;
|
||||
}
|
||||
|
||||
@ -69,10 +59,11 @@ public class Basic {
|
||||
}
|
||||
|
||||
static void ck(String fs, String exp, String got) {
|
||||
if (!exp.equals(got))
|
||||
if (!exp.equals(got)) {
|
||||
fail(fs, exp, got);
|
||||
else
|
||||
} else {
|
||||
pass();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
@ -94,13 +85,15 @@ public class Basic {
|
||||
BasicDouble.test();
|
||||
BasicDoubleObject.test();
|
||||
BasicBigDecimal.test();
|
||||
|
||||
BasicDateTime.test();
|
||||
|
||||
if (fail != 0)
|
||||
throw new RuntimeException((fail + pass) + " tests: "
|
||||
+ fail + " failure(s), first", first);
|
||||
else
|
||||
out.println("all " + (fail + pass) + " tests passed");
|
||||
if (fail != 0) {
|
||||
var tests_message = "%d tests: %d failure(s)%n".formatted(fail + pass, fail);
|
||||
var trace_message = "Traceback of the first error located";
|
||||
var message = "%s %s".formatted(tests_message, trace_message);
|
||||
throw new RuntimeException(message, first);
|
||||
} else {
|
||||
System.out.printf("All %d tests passed", pass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,50 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2004, 2019, 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.
|
||||
#
|
||||
|
||||
#
|
||||
|
||||
EXTRAOPTS="--add-exports java.base/jdk.internal.math=ALL-UNNAMED"
|
||||
LOCALEOPTS="-Djava.locale.providers=CLDR"
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} ${EXTRAOPTS} -cp ${TESTSRC} -d . \
|
||||
${TESTSRC}/Basic.java
|
||||
|
||||
expectPass() {
|
||||
if [ $1 -eq 0 ]
|
||||
then echo "--- passed as expected"
|
||||
else
|
||||
echo "--- failed"
|
||||
exit $1
|
||||
fi
|
||||
}
|
||||
|
||||
runTest() {
|
||||
echo "Testing:" ${1}
|
||||
TZ="${1}"; export TZ
|
||||
echo " " $TZ
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} ${EXTRAOPTS} ${LOCALEOPTS} Basic
|
||||
expectPass $?
|
||||
}
|
||||
|
||||
runTest US/Pacific
|
||||
runTest Asia/Novosibirsk
|
||||
|
100
test/jdk/java/util/Formatter/BasicTestLauncher.java
Normal file
100
test/jdk/java/util/Formatter/BasicTestLauncher.java
Normal file
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) 2022, 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.
|
||||
*/
|
||||
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
import java.io.IOException;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
/* @test
|
||||
* @summary Unit tests for formatter
|
||||
* @library /test/lib
|
||||
* @compile Basic.java
|
||||
* @compile BasicBoolean.java
|
||||
* @compile BasicBooleanObject.java
|
||||
* @compile BasicByte.java
|
||||
* @compile BasicByteObject.java
|
||||
* @compile BasicChar.java
|
||||
* @compile BasicCharObject.java
|
||||
* @compile BasicShort.java
|
||||
* @compile BasicShortObject.java
|
||||
* @compile BasicInt.java
|
||||
* @compile BasicIntObject.java
|
||||
* @compile BasicLong.java
|
||||
* @compile BasicLongObject.java
|
||||
* @compile BasicBigInteger.java
|
||||
* @compile BasicFloat.java
|
||||
* @compile BasicFloatObject.java
|
||||
* @compile BasicDouble.java
|
||||
* @compile BasicDoubleObject.java
|
||||
* @compile BasicBigDecimal.java
|
||||
* @compile BasicDateTime.java
|
||||
* @bug 4906370 4962433 4973103 4989961 5005818 5031150 4970931 4989491 5002937
|
||||
* 5005104 5007745 5061412 5055180 5066788 5088703 6317248 6318369 6320122
|
||||
* 6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168
|
||||
* 8059175 8204229
|
||||
*
|
||||
* @run junit BasicTestLauncher
|
||||
*/
|
||||
public class BasicTestLauncher {
|
||||
// Locale flag for testJVM
|
||||
private static final String JAVA_OPTS = "-Djava.locale.providers=CLDR";
|
||||
// Test class
|
||||
private static final String TEST_CLASS = "Basic";
|
||||
|
||||
/**
|
||||
* Executes Formatter Basic tests
|
||||
* @param timeZone the time zone to run tests against
|
||||
*/
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = { "US/Pacific", "Asia/Novosibirsk" })
|
||||
void testTimeZone(String timeZone) throws IOException{
|
||||
System.out.printf("$$$ Testing against %s!%n", timeZone);
|
||||
OutputAnalyzer output = RunTest(timeZone);
|
||||
CheckTest(output);
|
||||
System.out.printf("$$$ %s passed as expected!%n", timeZone);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and runs the testJVM process using Basic class
|
||||
* @param timeZone the time zone to be set in the testJVM environment
|
||||
*/
|
||||
private static OutputAnalyzer RunTest(String timeZone) throws IOException{
|
||||
// Build and run Basic class with correct configuration
|
||||
ProcessBuilder pb = ProcessTools.createTestJvm(JAVA_OPTS, TEST_CLASS);
|
||||
pb.environment().put("TZ", timeZone);
|
||||
Process process = pb.start();
|
||||
return new OutputAnalyzer(process);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates if the testJVM process passed all tests
|
||||
* @param output is an Output Analyzer for the testJVM
|
||||
* @throws RuntimeException for all testJVM failures
|
||||
*/
|
||||
private static void CheckTest(OutputAnalyzer output){
|
||||
output.shouldHaveExitValue(0)
|
||||
.reportDiagnosticSummary();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user