Fix JRE tests to pass under JDK11 semantics
Change-Id: Id8f5a6cd97d9eff67b593d193c431ec4ef8f134a
Review-Link: https://gwt-review.googlesource.com/#/c/21960/
diff --git a/user/test/com/google/gwt/emultest/java/lang/StringTest.java b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
index 05c1d00..556626e 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
@@ -690,7 +690,9 @@
try {
test.regionMatches(true, -1, null, -1, -1);
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (NullPointerException expected) {
// NPE must be thrown before any range checks
}
diff --git a/user/test/com/google/gwt/emultest/java/util/ArrayDequeTest.java b/user/test/com/google/gwt/emultest/java/util/ArrayDequeTest.java
index 13e5a09..988523f 100644
--- a/user/test/com/google/gwt/emultest/java/util/ArrayDequeTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/ArrayDequeTest.java
@@ -19,6 +19,8 @@
import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.testing.TestUtils;
+
import org.apache.commons.collections.TestCollection;
import java.util.ArrayDeque;
@@ -236,7 +238,9 @@
deque.removeLast();
try {
it.next();
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (ConcurrentModificationException expected) { }
deque = new ArrayDeque<>(asList(getFullNonNullElements()));
@@ -260,7 +264,9 @@
deque.addLast(new Object());
try {
it.next();
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (ConcurrentModificationException expected) { }
deque = new ArrayDeque<>(asList(getFullNonNullElements()));
@@ -282,7 +288,9 @@
deque.removeFirst();
try {
it.remove();
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (ConcurrentModificationException expected) { }
}
@@ -299,7 +307,9 @@
deque.removeFirst();
try {
it.next();
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (ConcurrentModificationException expected) { }
deque = new ArrayDeque<>(asList(getFullNonNullElements()));
@@ -318,7 +328,9 @@
try {
it.next();
} catch (ConcurrentModificationException e) {
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
}
deque.addFirst(new Object());
try {
@@ -345,7 +357,9 @@
deque.removeLast();
try {
it.remove();
- fail();
+ if (TestUtils.getJdkVersion() < 11) {
+ fail();
+ }
} catch (ConcurrentModificationException expected) { }
}
diff --git a/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java b/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
index bfb828a..08c4c89 100644
--- a/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
+++ b/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
@@ -20,6 +20,8 @@
import com.google.gwt.emultest.java.util.EmulTestBase;
+import com.google.gwt.testing.TestUtils;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -474,6 +476,15 @@
// not called again on subsequent closes
assertEquals(1, calledCount[0]);
+ if (TestUtils.getJdkVersion() >= 11) {
+ try {
+ s = s.onClose(() -> calledCount[0]++);
+ fail();
+ } catch (IllegalStateException expected) {
+ }
+ return;
+ }
+
// Add a handler after close, and re-close, the handler will only go off after the _second_
// close
calledCount[0] = 0;
diff --git a/user/test/com/google/gwt/testing/TestUtils.java b/user/test/com/google/gwt/testing/TestUtils.java
index b1ee1ff..14af34c 100644
--- a/user/test/com/google/gwt/testing/TestUtils.java
+++ b/user/test/com/google/gwt/testing/TestUtils.java
@@ -25,7 +25,6 @@
if (versionString.equals("none")) {
return -1;
}
-
return getMajorVersion(versionString);
}
@@ -36,6 +35,8 @@
private static int getMajorVersion(String versionString) {
String[] split = versionString.split("\\.");
assert split.length >= 1;
- return Integer.parseInt(split[1]);
+ return versionString.startsWith("1.")
+ ? /* Java <9 format, e.g. 1.7.0 */ Integer.parseInt(split[1])
+ : /* Java 9+ format, e.g. 9.1.0 */ Integer.parseInt(split[0]);
}
}