blob: a8b394fdb673cc021e10ce4dd2e50481ea52365b [file] [log] [blame]
/*
* Copyright 2010 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;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.dev.cfg.ModuleDef;
import com.google.gwt.dev.cfg.ModuleDefLoader;
import com.google.gwt.dev.jjs.JJSOptions;
import junit.framework.TestCase;
/**
* Test the -strict option to the GWT compiler.
*/
public class StrictModeTest extends TestCase {
/**
* Module name for a module with a bad source file.
*/
private static final String BAD = "com.google.gwt.dev.strict.bad.Bad";
/**
* Module name for a module with no bad source files.
*/
private static final String GOOD = "com.google.gwt.dev.strict.good.Good";
private TreeLogger logger = TreeLogger.NULL;
private JJSOptions options = new Compiler.CompilerOptionsImpl();
/**
* A normal compile with a bad file should still succeed.
*/
public void testBadCompile() throws UnableToCompleteException {
precompile(BAD);
}
/**
* A bad compile in strict mode.
*/
public void testBadCompileStrict() {
options.setStrict(true);
try {
precompile(BAD);
fail("Should have failed");
} catch (UnableToCompleteException expected) {
}
}
/**
* A normal compile with a bad file should still succeed.
*/
public void testBadValidate() {
assertTrue(validate(BAD));
}
/**
* A bad compile in strict mode.
*/
public void testBadValidateStrict() {
options.setStrict(true);
assertFalse(validate(BAD));
}
/**
* Test a plain old successful compile.
*/
public void testGoodCompile() throws UnableToCompleteException {
precompile(GOOD);
}
/**
* A good compile in strict mode.
*/
public void testGoodCompileStrict() throws UnableToCompleteException {
options.setStrict(true);
precompile(GOOD);
}
/**
* Test a plain old successful validate.
*/
public void testGoodValidate() {
assertTrue(validate(GOOD));
}
/**
* A good compile in strict mode.
*/
public void testGoodValidateStrict() {
options.setStrict(true);
assertTrue(validate(GOOD));
}
private void precompile(String moduleName) throws UnableToCompleteException {
ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
if (Precompile.precompile(logger, options, module, null) == null) {
throw new UnableToCompleteException();
}
}
private boolean validate(String moduleName) {
ModuleDef module;
try {
module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
} catch (UnableToCompleteException e) {
fail("Failed to load the module definition");
return false;
}
return Precompile.validate(logger, options, module, null);
}
}