From 483d1532170111e655ab4e7809b2a7a9a7f14028 Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Wed, 27 Sep 2017 05:52:30 +0000 Subject: [PATCH] ICU-13372 Fixed some test issues on Java 9. X-SVN-Rev: 40472 --- .../format/NumberFormatDataDrivenTest.java | 14 +++++++++-- .../src/com/ibm/icu/dev/test/TestUtil.java | 24 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java index 8573f42973b..030ee728e68 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java @@ -786,13 +786,23 @@ public class NumberFormatDataDrivenTest { "numberformattestspecification.txt", ICU58); } + // Note: This test case is really questionable. Depending on Java version, + // something may or may not work. However the test data assumes a specific + // Java runtime version. We should probably disable this test case - #13372 @Test public void TestDataDrivenJDK() { // Android implements java.text.DecimalFormat with ICU4J (ticket #13322). if (TestUtil.getJavaVendor() == TestUtil.JavaVendor.Android) return; - DataDrivenNumberFormatTestUtility.runFormatSuiteIncludingKnownFailures( - "numberformattestspecification.txt", JDK); + if (TestUtil.getJavaVersion() == 8) { + DataDrivenNumberFormatTestUtility.runFormatSuiteIncludingKnownFailures( + "numberformattestspecification.txt", JDK); + } else { + // Oracle/OpenJDK 9's behavior is not exactly same with Oracle/OpenJDK 8. + // Some test cases failed on 8 work well, while some other test cases + // fail on 9, but worked on 8. Skip this test case if Java version is not 8. + return; + } } @Test diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java index 93ab0c15c28..1b157f138f0 100644 --- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java +++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java @@ -171,6 +171,7 @@ public final class TestUtil { lock.inc(); } + @Override public void run() { try { synchronized (lock) { @@ -235,11 +236,24 @@ public final class TestUtil { int ver = -1; String verstr = System.getProperty("java.version"); if (verstr != null) { - String[] numbers = verstr.split("\\."); - try { - ver = Integer.parseInt(numbers[1]); - } catch (NumberFormatException e) { - ver = -1; + String majorVerStr = null; + if (verstr.startsWith("1.")) { + String[] numbers = verstr.split("\\."); + if (numbers.length > 1) { + majorVerStr = numbers[1]; + } + } else { + String[] numbers = verstr.split("\\.|-"); + if (numbers.length > 0) { + majorVerStr = numbers[0]; + } + } + if (majorVerStr != null) { + try { + ver = Integer.parseInt(majorVerStr); + } catch (NumberFormatException e) { + ver = -1; + } } } return ver;