]> granicus.if.org Git - icu/commitdiff
ICU-13372 Fixed some test issues on Java 9.
authorYoshito Umaoka <y.umaoka@gmail.com>
Wed, 27 Sep 2017 05:52:30 +0000 (05:52 +0000)
committerYoshito Umaoka <y.umaoka@gmail.com>
Wed, 27 Sep 2017 05:52:30 +0000 (05:52 +0000)
X-SVN-Rev: 40472

icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java
icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java

index 8573f42973bbf47cb2242afb30317b790b0b52c0..030ee728e68d460ea9e8e7bdf2d7cdbc9789c5c2 100644 (file)
@@ -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
index 93ab0c15c2852a24915fc415e9af680c92fa85b6..1b157f138f05c76c5ccfe662d4258f25f5b70f7b 100644 (file)
@@ -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;