Adding -da flag to disable assertions, and flipping the default for tests
to have assertions on unless -da is used.
Patch by: flin
Review by: fabbott
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5726 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..cd6be03
--- /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 82cc08a..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
@@ -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.
@@ -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