Reintroduced r6739, r6743 and a fix for a failing test.
Patch by: amitmanjhi
Review by: rjrjr (desk review)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6751 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/junit/JUnitMessageQueue.java b/user/src/com/google/gwt/junit/JUnitMessageQueue.java
index 4c06882..ddc8550 100644
--- a/user/src/com/google/gwt/junit/JUnitMessageQueue.java
+++ b/user/src/com/google/gwt/junit/JUnitMessageQueue.java
@@ -57,11 +57,20 @@
}
}
+ private static final Set<Class<? extends Throwable>> THROWABLES_NOT_RETRIED = createThrowablesNotRetried();
+
+ private static Set<Class<? extends Throwable>> createThrowablesNotRetried() {
+ Set<Class<? extends Throwable>> throwableSet = new HashSet<Class<? extends Throwable>>();
+ throwableSet.add(com.google.gwt.junit.JUnitFatalLaunchException.class);
+ throwableSet.add(java.lang.Error.class);
+ return throwableSet;
+ }
+
/**
* Records results for each client; must lock before accessing.
*/
private final Map<String, ClientStatus> clientStatuses = new HashMap<String, ClientStatus>();
-
+
/**
* A set of the GWT user agents (eg. ie6, gecko) that have connected.
*/
@@ -100,7 +109,7 @@
*/
JUnitMessageQueue() {
}
-
+
/**
* Called by the servlet to query for for the next block to test.
*
@@ -390,9 +399,10 @@
}
}
- /*
+ /**
* Returns true iff any there are no results, missing results, or any of the
- * test results is an exception other than JUnitFatalLaunchException.
+ * test results is an exception other than those in {@code
+ * THROWABLES_NOT_RETRIED}.
*/
boolean needsRerunning(TestInfo testInfo) {
Map<String, JUnitResult> results = getResults(testInfo);
@@ -408,8 +418,7 @@
return true;
}
Throwable exception = result.getException();
- if (exception != null
- && !(exception instanceof JUnitFatalLaunchException)) {
+ if (exception != null && !isMember(exception, THROWABLES_NOT_RETRIED)) {
return true;
}
}
@@ -461,7 +470,7 @@
}
return clientStatus;
}
-
+
/**
* Get the map of test results from all clients for a given {@link TestInfo},
* creating it if necessary.
@@ -477,4 +486,13 @@
}
return results;
}
+
+ private boolean isMember(Throwable exception, Set<Class<? extends Throwable>> throwableSet) {
+ for (Class<? extends Throwable> throwable : throwableSet) {
+ if (throwable.isInstance(exception)) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java b/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java
index d7f7058..96dd50b 100644
--- a/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java
+++ b/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.junit;
+import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.junit.client.impl.JUnitResult;
import com.google.gwt.junit.client.impl.JUnitHost.TestBlock;
import com.google.gwt.junit.client.impl.JUnitHost.TestInfo;
@@ -353,7 +354,7 @@
TestInfo testInfo = queue.getTestBlocks().get(0)[0];
Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>();
JUnitResult junitResult = new JUnitResult();
- junitResult.setException(new AssertionError());
+ junitResult.setException(new UnableToCompleteException());
results.put(testInfo, junitResult);
queue.reportResults("client0", "ie6", results);
results = new HashMap<TestInfo, JUnitResult>();
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
index 3a7e091..aa74043 100644
--- a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
@@ -381,10 +381,9 @@
if (htmlunitMode && !attemptedOnce) {
// fail
attemptedOnce = true;
- assertTrue(false);
- } else {
- assertTrue(true);
+ throw new RuntimeException();
}
+ assertTrue(true);
}
public void testSetUpTearDown() throws Exception {