Reinstating assertions default on in web tests, with -da to turn it off, from r5726, but this time with test fixes for IE-specific assertion trips.
Patch by: flin, except CoverageTest.java & HandlerManagerTest.java
fabbott, for those two test files
Review by: fabbott, except CoverageTest.java and HandlerManagerTest.java
jat, for those two test files
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5755 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java
index 53924db..54243ee 100644
--- a/dev/core/src/com/google/gwt/dev/GWTShell.java
+++ b/dev/core/src/com/google/gwt/dev/GWTShell.java
@@ -90,7 +90,7 @@
/**
* Concrete class to implement all shell options.
*/
- static class ShellOptionsImpl extends HostedModeBaseOptionsImpl implements
+ protected static class ShellOptionsImpl extends HostedModeBaseOptionsImpl implements
HostedModeBaseOptions, WorkDirs, LegacyCompilerOptions {
private int localWorkers;
private File outDir;
diff --git a/dev/core/src/com/google/gwt/dev/HostedModeBase.java b/dev/core/src/com/google/gwt/dev/HostedModeBase.java
index 9d1d7cc..1a1f59e 100644
--- a/dev/core/src/com/google/gwt/dev/HostedModeBase.java
+++ b/dev/core/src/com/google/gwt/dev/HostedModeBase.java
@@ -32,6 +32,7 @@
import com.google.gwt.dev.shell.ShellModuleSpaceHost;
import com.google.gwt.dev.util.Util;
import com.google.gwt.dev.util.arg.ArgHandlerDisableAggressiveOptimization;
+import com.google.gwt.dev.util.arg.ArgHandlerDisableAssertions;
import com.google.gwt.dev.util.arg.ArgHandlerDisableCastChecking;
import com.google.gwt.dev.util.arg.ArgHandlerDisableClassMetadata;
import com.google.gwt.dev.util.arg.ArgHandlerDraftCompile;
@@ -321,6 +322,7 @@
registerHandler(new ArgHandlerGenDir(options));
registerHandler(new ArgHandlerScriptStyle(options));
registerHandler(new ArgHandlerEnableAssertions(options));
+ registerHandler(new ArgHandlerDisableAssertions(options));
registerHandler(new ArgHandlerDisableAggressiveOptimization(options));
registerHandler(new ArgHandlerDisableClassMetadata(options));
registerHandler(new ArgHandlerDisableCastChecking(options));
diff --git a/dev/core/src/com/google/gwt/dev/Precompile.java b/dev/core/src/com/google/gwt/dev/Precompile.java
index 5c28b9e..aefc3d7 100644
--- a/dev/core/src/com/google/gwt/dev/Precompile.java
+++ b/dev/core/src/com/google/gwt/dev/Precompile.java
@@ -43,6 +43,7 @@
import com.google.gwt.dev.util.PerfLogger;
import com.google.gwt.dev.util.Util;
import com.google.gwt.dev.util.arg.ArgHandlerDisableAggressiveOptimization;
+import com.google.gwt.dev.util.arg.ArgHandlerDisableAssertions;
import com.google.gwt.dev.util.arg.ArgHandlerDisableCastChecking;
import com.google.gwt.dev.util.arg.ArgHandlerDisableClassMetadata;
import com.google.gwt.dev.util.arg.ArgHandlerDisableRunAsync;
@@ -94,6 +95,7 @@
registerHandler(new ArgHandlerGenDir(options));
registerHandler(new ArgHandlerScriptStyle(options));
registerHandler(new ArgHandlerEnableAssertions(options));
+ registerHandler(new ArgHandlerDisableAssertions(options));
registerHandler(new ArgHandlerDisableAggressiveOptimization(options));
registerHandler(new ArgHandlerDisableClassMetadata(options));
registerHandler(new ArgHandlerDisableCastChecking(options));
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAssertions.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAssertions.java
new file mode 100644
index 0000000..e84b661
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAssertions.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev.util.arg;
+
+import com.google.gwt.util.tools.ArgHandlerFlag;
+
+/**
+ * Handler for -da arg to disable assertions in compiled code.
+ */
+public final class ArgHandlerDisableAssertions extends ArgHandlerFlag {
+
+ private final OptionEnableAssertions option;
+
+ public ArgHandlerDisableAssertions(OptionEnableAssertions option) {
+ this.option = option;
+ }
+
+ @Override
+ public String getPurpose() {
+ return "Debugging: disables checking assertion statements in the compiled output.";
+ }
+
+ @Override
+ public String getTag() {
+ return "-da";
+ }
+
+ @Override
+ public boolean setFlag() {
+ option.setEnableAssertions(false);
+ return true;
+ }
+
+}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
index 9697b1c..b2e2f90 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
@@ -30,7 +30,7 @@
@Override
public String getPurpose() {
- return "Debugging: causes the compiled output to check assert statements.";
+ return "Debugging: enables checking assertion statements in the compiled output.";
}
@Override
diff --git a/dev/core/test/com/google/gwt/dev/GWTShellTest.java b/dev/core/test/com/google/gwt/dev/GWTShellTest.java
index 29ab059..1e46da0 100644
--- a/dev/core/test/com/google/gwt/dev/GWTShellTest.java
+++ b/dev/core/test/com/google/gwt/dev/GWTShellTest.java
@@ -76,6 +76,16 @@
assertEquals("foo", options.getStartupURLs().get(1));
}
+ public void testAssertionsArgs() {
+ // Assertion is enabled by default in web mode, i.e. -ea flag.
+ assertProcessSuccess(argProcessor, "-ea");
+ assertTrue(options.isEnableAssertions());
+ assertProcessSuccess(argProcessor, "-da");
+ assertFalse(options.isEnableAssertions());
+ assertProcessSuccess(argProcessor, "-ea");
+ assertTrue(options.isEnableAssertions());
+ }
+
public void testDefaultArgs() {
assertProcessSuccess(argProcessor);
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java
index 2a11a2b..3f69af0 100644
--- a/user/src/com/google/gwt/junit/JUnitShell.java
+++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -1,12 +1,12 @@
/*
* Copyright 2008 Google Inc.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -52,26 +52,26 @@
/**
* This class is responsible for hosting JUnit test case execution. There are
* three main pieces to the JUnit system.
- *
+ *
* <ul>
* <li>Test environment</li>
* <li>Client classes</li>
* <li>Server classes</li>
* </ul>
- *
+ *
* <p>
* The test environment consists of this class and the non-translatable version
* of {@link com.google.gwt.junit.client.GWTTestCase}. These two classes
* integrate directly into the real JUnit test process.
* </p>
- *
+ *
* <p>
* The client classes consist of the translatable version of {@link
* com.google.gwt.junit.client.GWTTestCase}, translatable JUnit classes, and the
* user's own {@link com.google.gwt.junit.client.GWTTestCase}-derived class.
* The client communicates to the server via RPC.
* </p>
- *
+ *
* <p>
* The server consists of {@link com.google.gwt.junit.server.JUnitHostImpl}, an
* RPC servlet which communicates back to the test environment through a
@@ -330,15 +330,15 @@
/**
* The amount of time to wait for all clients to have contacted the server and
- * begin running the test. "Contacted" does not necessarily mean "the test
- * has begun," e.g. for linker errors stopping the test initialization.
+ * begin running the test. "Contacted" does not necessarily mean "the test has
+ * begun," e.g. for linker errors stopping the test initialization.
*/
private static final int TEST_BEGIN_TIMEOUT_MILLIS = 60000;
/**
* The amount of time to wait for all clients to complete a single test
- * method, in milliseconds, measured from when the <i>last</i> client
- * connects (and thus starts the test). 5 minutes.
+ * method, in milliseconds, measured from when the <i>last</i> client
+ * connects (and thus starts the test). 5 minutes.
*/
private static final long TEST_METHOD_TIMEOUT_MILLIS = 300000;
@@ -351,7 +351,7 @@
/**
* Called by {@link com.google.gwt.junit.server.JUnitHostImpl} to get an
* interface into the test process.
- *
+ *
* @return The {@link JUnitMessageQueue} interface that belongs to the
* singleton {@link JUnitShell}, or <code>null</code> if no such
* singleton exists.
@@ -503,9 +503,9 @@
private long testBeginTimeout;
/**
- * Timeout for individual test method. If System.currentTimeMillis() is later
- * than this timestamp, then we need to pack up and go home. Zero for "not
- * yet set" (at the start of a test). This interval begins when the
+ * Timeout for individual test method. If System.currentTimeMillis() is later
+ * than this timestamp, then we need to pack up and go home. Zero for "not yet
+ * set" (at the start of a test). This interval begins when the
* testBeginTimeout interval is done.
*/
private long testMethodTimeout;
@@ -522,6 +522,9 @@
if (System.getProperty(PROP_JUNIT_HYBRID_MODE) != null) {
runStyle = new RunStyleLocalWeb(this);
}
+ // If no explicit disable argument presented,
+ // Enables assertions by default in all tests
+ options.setEnableAssertions(true);
}
@Override
@@ -586,11 +589,12 @@
} else if (testMethodTimeout < currentTimeMillis) {
double elapsed = (currentTimeMillis - testBeginTime) / 1000.0;
throw new TimeoutException(
- "The browser did not complete the test method "
+ "The browser did not complete the test method "
+ messageQueue.getCurrentTestName() + " in "
- + TEST_METHOD_TIMEOUT_MILLIS + "ms.\n We have no results from: "
- + messageQueue.getWorkingClients()
- + "\n Actual time elapsed: " + elapsed + " seconds.\n");
+ + TEST_METHOD_TIMEOUT_MILLIS
+ + "ms.\n We have no results from: "
+ + messageQueue.getWorkingClients() + "\n Actual time elapsed: "
+ + elapsed + " seconds.\n");
}
} else if (testBeginTimeout < currentTimeMillis) {
double elapsed = (currentTimeMillis - testBeginTime) / 1000.0;
@@ -668,9 +672,8 @@
currentModule.clearEntryPoints();
currentModule.addEntryPointTypeName(GWTRunner.class.getName());
// Squirrel away the name of the active module for GWTRunnerGenerator
- ConfigurationProperty moduleNameProp
- = currentModule.getProperties().createConfiguration(
- "junit.moduleName", false);
+ ConfigurationProperty moduleNameProp = currentModule.getProperties().createConfiguration(
+ "junit.moduleName", false);
moduleNameProp.setValue(moduleName);
runStyle.maybeCompileModule(syntheticModuleName);
}
@@ -701,7 +704,7 @@
// contacted; something probably went wrong (the module failed to load?)
testBeginTime = System.currentTimeMillis();
testBeginTimeout = testBeginTime + TEST_BEGIN_TIMEOUT_MILLIS;
- testMethodTimeout = 0; // wait until test execution begins
+ testMethodTimeout = 0; // wait until test execution begins
pumpEventLoop();
} catch (TimeoutException e) {
lastLaunchFailed = true;
diff --git a/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java b/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
index 1f71d9b..dbce651 100644
--- a/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
@@ -22,9 +22,10 @@
* possible in the Java to JavaScript compiler. This test is not at all intended
* to execute correctly.
*/
-@SuppressWarnings("hiding")
public class CoverageTest extends CoverageBase {
+ private static final double EPSILON = 0.000001;
+
/**
* TODO: document me.
*/
@@ -196,7 +197,8 @@
assert i == 3 : 1.2f;
fail();
} catch (AssertionError e) {
- assertEquals("1.2", e.getMessage());
+ double val = Double.parseDouble(e.getMessage());
+ assertTrue(Math.abs(1.2f - val) < EPSILON);
}
try {
@@ -514,6 +516,7 @@
o = new CoverageTest().new Inner();
}
+ @SuppressWarnings("static-access")
private void testQualifiedNameReference() {
// QualifiedNameReference
CoverageTest m = new CoverageTest();
@@ -533,6 +536,7 @@
assertEquals("D", 4, new CoverageTest().getNext().y);
}
+ @SuppressWarnings("static-access")
private void testReferenceCalls() {
// MessageSend, QualifiedSuperReference, QualifiedThisReference,
// SuperReference, ThisReference
@@ -557,6 +561,7 @@
CoverageTest.super.sfoo();
}
+ @SuppressWarnings("static-access")
private Inner testReferences() {
// FieldReference, QualifiedSuperReference, QualifiedThisReference,
// SuperReference, ThisReference
@@ -598,6 +603,7 @@
fail();
}
+ @SuppressWarnings("static-access")
private void testSynchronizedStatement() {
// SynchronizedStatement
synchronized (inner) {
diff --git a/user/test/com/google/gwt/event/shared/HandlerManagerTest.java b/user/test/com/google/gwt/event/shared/HandlerManagerTest.java
index 9d9dbaf..acd4865 100644
--- a/user/test/com/google/gwt/event/shared/HandlerManagerTest.java
+++ b/user/test/com/google/gwt/event/shared/HandlerManagerTest.java
@@ -202,24 +202,22 @@
};
manager.addHandler(MouseDownEvent.getType(), one);
- if (!GWT.isScript()) {
+ if (HandlerManagerTest.class.desiredAssertionStatus()) {
try {
manager.fireEvent(new MouseDownEvent() {
});
fail("Should have thrown on remove");
} catch (AssertionError e) { /* pass */
}
- return;
+ } else {
+ manager.fireEvent(new MouseDownEvent() {
+ });
+ assertFired(one);
+ reset();
+ manager.fireEvent(new MouseDownEvent() {
+ });
+ assertFired(one, mouse1);
}
-
- // Web mode, no asserts, so remove will quietly succeed.
- manager.fireEvent(new MouseDownEvent() {
- });
- assertFired(one);
- reset();
- manager.fireEvent(new MouseDownEvent() {
- });
- assertFired(one, mouse1);
}
public void testMultiFiring() {