Author: sco...@google.com Date: Thu Dec 11 22:39:05 2008 New Revision: 4327
Added: releases/1.6/dev/core/src/com/google/gwt/dev/ArgProcessorBase.java (contents, props changed) releases/1.6/dev/core/test/com/google/gwt/dev/ArgProcessorTestBase.java (contents, props changed) releases/1.6/dev/core/test/com/google/gwt/dev/CompilerTest.java (contents, props changed) releases/1.6/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java (contents, props changed) releases/1.6/dev/core/test/com/google/gwt/dev/GWTShellTest.java (contents, props changed) releases/1.6/dev/core/test/com/google/gwt/dev/HostedModeTest.java (contents, props changed) Modified: releases/1.6/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java releases/1.6/dev/core/src/com/google/gwt/dev/CompilePermsServer.java releases/1.6/dev/core/src/com/google/gwt/dev/HostedMode.java releases/1.6/dev/core/src/com/google/gwt/dev/HostedModeBase.java Log: Added tests for arg processing of the main GWT entry points. - Some testability tweaks on the classes being tested. Review by: bobv (TBR) Added: releases/1.6/dev/core/src/com/google/gwt/dev/ArgProcessorBase.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/src/com/google/gwt/dev/ArgProcessorBase.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,37 @@ +/* + * 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 + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev; + +import com.google.gwt.util.tools.ToolBase; + +/** + * Base class for new-style argument processors. + */ +abstract class ArgProcessorBase extends ToolBase { + /* + * Overridden to make public. + */ + @Override + public final boolean processArgs(String[] args) { + return super.processArgs(args); + } + + /* + * Made abstract to force override. + */ + @Override + protected abstract String getName(); +} Modified: releases/1.6/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java ============================================================================== --- releases/1.6/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java (original) +++ releases/1.6/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java Thu Dec 11 22:39:05 2008 @@ -19,24 +19,12 @@ import com.google.gwt.dev.util.arg.ArgHandlerModuleName; import com.google.gwt.dev.util.arg.ArgHandlerTreeLoggerFlag; import com.google.gwt.dev.util.arg.ArgHandlerWorkDirRequired; -import com.google.gwt.util.tools.ToolBase; -abstract class CompileArgProcessor extends ToolBase { +abstract class CompileArgProcessor extends ArgProcessorBase { public CompileArgProcessor(CompileTaskOptions options) { registerHandler(new ArgHandlerLogLevel(options)); registerHandler(new ArgHandlerTreeLoggerFlag(options)); registerHandler(new ArgHandlerWorkDirRequired(options)); registerHandler(new ArgHandlerModuleName(options)); } - - /* - * Overridden to make public. - */ - @Override - public final boolean processArgs(String[] args) { - return super.processArgs(args); - } - - @Override - protected abstract String getName(); } Modified: releases/1.6/dev/core/src/com/google/gwt/dev/CompilePermsServer.java ============================================================================== --- releases/1.6/dev/core/src/com/google/gwt/dev/CompilePermsServer.java (original) +++ releases/1.6/dev/core/src/com/google/gwt/dev/CompilePermsServer.java Thu Dec 11 22:39:05 2008 @@ -22,7 +22,6 @@ import com.google.gwt.dev.util.arg.OptionLogLevel; import com.google.gwt.dev.util.log.PrintWriterTreeLogger; import com.google.gwt.util.tools.ArgHandlerString; -import com.google.gwt.util.tools.ToolBase; import java.io.File; import java.io.FileInputStream; @@ -162,20 +161,12 @@ } } - static class ArgProcessor extends ToolBase { + static class ArgProcessor extends ArgProcessorBase { public ArgProcessor(CompileServerOptions options) { registerHandler(new ArgHandlerLogLevel(options)); registerHandler(new ArgHandlerCompileHost(options)); registerHandler(new ArgHandlerCompilePort(options)); registerHandler(new ArgHandlerCookie(options)); - } - - /* - * Overridden to make public. - */ - @Override - public final boolean processArgs(String[] args) { - return super.processArgs(args); } @Override Modified: releases/1.6/dev/core/src/com/google/gwt/dev/HostedMode.java ============================================================================== --- releases/1.6/dev/core/src/com/google/gwt/dev/HostedMode.java (original) +++ releases/1.6/dev/core/src/com/google/gwt/dev/HostedMode.java Thu Dec 11 22:39:05 2008 @@ -27,6 +27,7 @@ import com.google.gwt.dev.shell.jetty.JettyLauncher; import com.google.gwt.dev.util.Util; import com.google.gwt.dev.util.arg.ArgHandlerExtraDir; +import com.google.gwt.dev.util.arg.ArgHandlerLocalWorkers; import com.google.gwt.dev.util.arg.ArgHandlerModuleName; import com.google.gwt.dev.util.arg.ArgHandlerWarDir; import com.google.gwt.dev.util.arg.ArgHandlerWorkDirOptional; @@ -68,10 +69,28 @@ } @Override - public boolean setString(String arg) { + public boolean setString(String sclClassName) { // Supercedes -noserver. setRunTomcat(true); - return setServer(console, arg); + Throwable t; + try { + Class<?> clazz = Class.forName(sclClassName, true, + Thread.currentThread().getContextClassLoader()); + Class<? extends ServletContainerLauncher> sclClass = clazz.asSubclass(ServletContainerLauncher.class); + setServerContainerLauncher(sclClass.newInstance()); + return true; + } catch (ClassCastException e) { + t = e; + } catch (ClassNotFoundException e) { + t = e; + } catch (InstantiationException e) { + t = e; + } catch (IllegalAccessException e) { + t = e; + } + System.err.println("Unable to load server class '" + sclClassName + "'"); + t.printStackTrace(); + return false; } } @@ -110,6 +129,7 @@ registerHandler(new ArgHandlerWarDir(options)); registerHandler(new ArgHandlerExtraDir(options)); registerHandler(new ArgHandlerWorkDirOptional(options)); + registerHandler(new ArgHandlerLocalWorkers(options)); registerHandler(new ArgHandlerModuleName(options)); } @@ -187,9 +207,9 @@ } /** - * The public API of this class is yet to be determined. + * Default constructor for testing; no public API yet. */ - private HostedMode() { + HostedMode() { } @Override @@ -292,6 +312,10 @@ return -1; } + protected ServletContainerLauncher getServerContainerLauncher() { + return launcher; + } + @Override protected boolean initModule(String moduleName) { ModuleDef module = modulesByName.get(moduleName); @@ -328,26 +352,8 @@ return module; } - protected boolean setServer(TreeLogger logger, String serverClassName) { - Throwable t; - try { - Class<?> clazz = Class.forName(serverClassName, true, - Thread.currentThread().getContextClassLoader()); - Class<? extends ServletContainerLauncher> sclClass = clazz.asSubclass(ServletContainerLauncher.class); - launcher = sclClass.newInstance(); - return true; - } catch (ClassCastException e) { - t = e; - } catch (ClassNotFoundException e) { - t = e; - } catch (InstantiationException e) { - t = e; - } catch (IllegalAccessException e) { - t = e; - } - logger.log(TreeLogger.ERROR, "Unable to load server class '" - + serverClassName + "'", t); - return false; + protected void setServerContainerLauncher(ServletContainerLauncher launcher) { + this.launcher = launcher; } /** Modified: releases/1.6/dev/core/src/com/google/gwt/dev/HostedModeBase.java ============================================================================== --- releases/1.6/dev/core/src/com/google/gwt/dev/HostedModeBase.java (original) +++ releases/1.6/dev/core/src/com/google/gwt/dev/HostedModeBase.java Thu Dec 11 22:39:05 2008 @@ -56,6 +56,7 @@ import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -189,7 +190,7 @@ } } - abstract class ArgProcessor extends ToolBase { + abstract class ArgProcessor extends ArgProcessorBase { public ArgProcessor() { registerHandler(getArgHandlerPort()); registerHandler(new ArgHandlerWhitelist()); @@ -205,20 +206,6 @@ registerHandler(new ArgHandlerEnableAssertions(options)); registerHandler(new ArgHandlerDisableAggressiveOptimization(options)); } - - /* - * Overridden to make public. - */ - @Override - public final boolean processArgs(String[] args) { - return super.processArgs(args); - } - - /* - * Overridden to make abstract. - */ - @Override - protected abstract String getName(); } interface HostedModeBaseOptions extends JJSOptions, OptionLogLevel, @@ -298,14 +285,6 @@ } } - static { - // Force ToolBase to clinit, which causes SWT stuff to happen. - new ToolBase() { - }; - // Correct menu on Mac OS X - Display.setAppName("GWT"); - } - protected final HostedModeBaseOptions options; /** @@ -320,11 +299,7 @@ private final List<Shell> browserShells = new ArrayList<Shell>(); - /** - * Use the default display; constructing a new one would make instantiating - * multiple GWTShells fail with a mysterious exception. - */ - private final Display display = Display.getDefault(); + private Display display; private boolean headlessMode = false; @@ -359,6 +334,10 @@ return port; } + public final List<String> getStartupURLs() { + return Collections.unmodifiableList(startupUrls); + } + public TreeLogger getTopLogger() { return mainWnd.getLogger(); } @@ -371,6 +350,10 @@ } } + public boolean isRunTomcat() { + return runTomcat; + } + /** * Launch the arguments as Urls in separate windows. */ @@ -538,6 +521,19 @@ protected abstract void doShutDownServer(); protected boolean doStartup() { + // Force ToolBase to clinit, which causes SWT stuff to happen. + new ToolBase() { + }; + + /** + * Use the default display; constructing a new one would make instantiating + * multiple GWTShells fail with a mysterious exception. + */ + display = Display.getDefault(); + + // Correct menu on Mac OS X + Display.setAppName("GWT"); + loadRequiredNativeLibs(); // Create the main app window. Added: releases/1.6/dev/core/test/com/google/gwt/dev/ArgProcessorTestBase.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/test/com/google/gwt/dev/ArgProcessorTestBase.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,76 @@ +package com.google.gwt.dev; + +import com.google.gwt.util.tools.Utility; + +import junit.framework.TestCase; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; + +/** + * Base class for argument processor testing. + */ +public abstract class ArgProcessorTestBase extends TestCase { + + private static class MockOutputStream extends OutputStream { + private boolean isEmpty = true; + + public boolean isEmpty() { + return isEmpty; + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + isEmpty = false; + } + + @Override + public void write(int b) throws IOException { + isEmpty = false; + } + } + + /* + * The "compute installation directory" dance. + */ + static { + String oldValue = System.getProperty("gwt.devjar"); + System.setProperty("gwt.devjar", "gwt-dev-windows.jar"); + Utility.getInstallPath(); + if (oldValue == null) { + System.getProperties().remove("gwt.devjar"); + } else { + System.setProperty("gwt.devjar", oldValue); + } + } + + protected static void assertProcessFailure(ArgProcessorBase argProcessor, + String... args) { + PrintStream oldErrStream = System.err; + MockOutputStream myErrStream = new MockOutputStream(); + try { + System.setErr(new PrintStream(myErrStream, true)); + assertFalse(argProcessor.processArgs(args)); + } finally { + System.setErr(oldErrStream); + } + assertFalse(myErrStream.isEmpty()); + } + + protected static void assertProcessSuccess(ArgProcessorBase argProcessor, + String... args) { + PrintStream oldErrStream = System.err; + ByteArrayOutputStream myErrStream = new ByteArrayOutputStream(); + try { + System.setErr(new PrintStream(myErrStream, true)); + if (!argProcessor.processArgs(args)) { + fail(new String(myErrStream.toByteArray())); + } + assertEquals(0, myErrStream.size()); + } finally { + System.setErr(oldErrStream); + } + } +} Added: releases/1.6/dev/core/test/com/google/gwt/dev/CompilerTest.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/test/com/google/gwt/dev/CompilerTest.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,68 @@ +package com.google.gwt.dev; + +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.dev.Compiler.CompilerOptionsImpl; +import com.google.gwt.dev.jjs.JsOutputOption; + +import java.io.File; + +/** + * Test for {...@link Compiler}. + */ +public class CompilerTest extends ArgProcessorTestBase { + + private final Compiler.ArgProcessor argProcessor; + private final CompilerOptionsImpl options = new CompilerOptionsImpl(); + + public CompilerTest() { + argProcessor = new Compiler.ArgProcessor(options); + } + + public void testAllValidArgs() { + assertProcessSuccess(argProcessor, "-logLevel", "DEBUG", "-style", + "PRETTY", "-ea", "-XdisableAggressiveOptimization", "-gen", "myGen", + "-war", "myWar", "-workDir", "myWork", "-extra", "myExtra", + "-localWorkers", "2", "c.g.g.h.H", "my.Module"); + + assertEquals(new File("myGen").getAbsoluteFile(), + options.getGenDir().getAbsoluteFile()); + assertEquals(new File("myWar"), options.getWarDir()); + assertEquals(new File("myWork"), options.getWorkDir()); + assertEquals(new File("myExtra"), options.getExtraDir()); + + assertEquals(2, options.getLocalWorkers()); + + assertEquals(TreeLogger.DEBUG, options.getLogLevel()); + assertEquals(JsOutputOption.PRETTY, options.getOutput()); + assertTrue(options.isEnableAssertions()); + assertFalse(options.isAggressivelyOptimize()); + + assertEquals(2, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + assertEquals("my.Module", options.getModuleNames().get(1)); + } + + public void testDefaultArgs() { + assertProcessSuccess(argProcessor, "c.g.g.h.H"); + + assertEquals(null, options.getGenDir()); + assertEquals(new File("war").getAbsoluteFile(), + options.getWarDir().getAbsoluteFile()); + assertEquals(null, options.getWorkDir()); + assertEquals(null, options.getExtraDir()); + + assertEquals(TreeLogger.INFO, options.getLogLevel()); + assertEquals(JsOutputOption.OBFUSCATED, options.getOutput()); + assertFalse(options.isEnableAssertions()); + assertTrue(options.isAggressivelyOptimize()); + + assertEquals(1, options.getLocalWorkers()); + + assertEquals(1, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + } + + public void testForbiddenArgs() { + assertProcessFailure(argProcessor, "-out", "www"); + } +} Added: releases/1.6/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,63 @@ +package com.google.gwt.dev; + +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.dev.GWTCompiler.GWTCompilerOptionsImpl; +import com.google.gwt.dev.jjs.JsOutputOption; + +import java.io.File; + +/** + * Test for deprecated {...@link GWTShell}. + */ +...@suppresswarnings("deprecation") +public class GWTCompilerTest extends ArgProcessorTestBase { + + private final GWTCompiler.ArgProcessor argProcessor; + private final GWTCompilerOptionsImpl options = new GWTCompilerOptionsImpl(); + + public GWTCompilerTest() { + argProcessor = new GWTCompiler.ArgProcessor(options); + } + + public void testAllValidArgs() { + assertProcessSuccess(argProcessor, "-logLevel", "DEBUG", "-style", + "PRETTY", "-ea", "-XdisableAggressiveOptimization", "-out", "myWww", + "-gen", "myGen", "c.g.g.h.H", "my.Module"); + + assertEquals(new File("myGen").getAbsoluteFile(), + options.getGenDir().getAbsoluteFile()); + assertEquals(new File("myWww"), options.getOutDir()); + + assertEquals(TreeLogger.DEBUG, options.getLogLevel()); + assertEquals(JsOutputOption.PRETTY, options.getOutput()); + assertTrue(options.isEnableAssertions()); + assertFalse(options.isAggressivelyOptimize()); + + assertEquals(2, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + assertEquals("my.Module", options.getModuleNames().get(1)); + } + + public void testDefaultArgs() { + assertProcessSuccess(argProcessor, "c.g.g.h.H"); + + assertEquals(null, options.getGenDir()); + assertEquals(new File("").getAbsoluteFile(), + options.getOutDir().getAbsoluteFile()); + + assertEquals(TreeLogger.INFO, options.getLogLevel()); + assertEquals(JsOutputOption.OBFUSCATED, options.getOutput()); + assertFalse(options.isEnableAssertions()); + assertTrue(options.isAggressivelyOptimize()); + + assertEquals(1, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + } + + public void testForbiddenArgs() { + assertProcessFailure(argProcessor, "-localWorkers", "2"); + assertProcessFailure(argProcessor, "-extra", "extra"); + assertProcessFailure(argProcessor, "-war", "war"); + assertProcessFailure(argProcessor, "-work", "work"); + } +} Added: releases/1.6/dev/core/test/com/google/gwt/dev/GWTShellTest.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/test/com/google/gwt/dev/GWTShellTest.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,76 @@ +package com.google.gwt.dev; + +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.dev.GWTShell.ShellOptionsImpl; +import com.google.gwt.dev.HostedModeTest.MySCL; +import com.google.gwt.dev.jjs.JsOutputOption; +import com.google.gwt.dev.shell.BrowserWidgetHostChecker; + +import java.io.File; + +/** + * Test for deprecated {...@link GWTShell}. + */ +...@suppresswarnings("deprecation") +public class GWTShellTest extends ArgProcessorTestBase { + + private final GWTShell.ArgProcessor argProcessor; + private final ShellOptionsImpl options; + private final GWTShell shell; + + public GWTShellTest() { + shell = new GWTShell(); + options = shell.options; + argProcessor = shell.new ArgProcessor(false, false); + } + + public void testAllValidArgs() { + assertProcessSuccess(argProcessor, "-port", "8080", "-whitelist", "white", + "-blacklist", "black", "-logLevel", "DEBUG", "-style", "PRETTY", "-ea", + "-XdisableAggressiveOptimization", "-noserver", "-out", "myWww", + "-gen", "myGen", "http://www.google.com/", "foo"); + + assertNotNull(BrowserWidgetHostChecker.matchWhitelisted("white")); + assertNotNull(BrowserWidgetHostChecker.matchBlacklisted("black")); + + assertEquals(new File("myGen").getAbsoluteFile(), + options.getGenDir().getAbsoluteFile()); + assertEquals(new File("myWww"), options.getOutDir()); + + assertEquals(TreeLogger.DEBUG, options.getLogLevel()); + assertEquals(JsOutputOption.PRETTY, options.getOutput()); + assertTrue(options.isEnableAssertions()); + assertFalse(options.isAggressivelyOptimize()); + + assertEquals(8080, shell.getPort()); + assertFalse(shell.isRunTomcat()); + assertEquals(2, shell.getStartupURLs().size()); + assertEquals("http://www.google.com/", shell.getStartupURLs().get(0)); + assertEquals("foo", shell.getStartupURLs().get(1)); + } + + public void testDefaultArgs() { + assertProcessSuccess(argProcessor); + + assertEquals(null, options.getGenDir()); + assertEquals(new File("").getAbsoluteFile(), + options.getOutDir().getAbsoluteFile()); + + assertEquals(TreeLogger.INFO, options.getLogLevel()); + assertEquals(JsOutputOption.OBFUSCATED, options.getOutput()); + assertFalse(options.isEnableAssertions()); + assertTrue(options.isAggressivelyOptimize()); + + assertEquals(8888, shell.getPort()); + assertTrue(shell.isRunTomcat()); + assertEquals(0, shell.getStartupURLs().size()); + } + + public void testForbiddenArgs() { + assertProcessFailure(argProcessor, "-localWorkers", "2"); + assertProcessFailure(argProcessor, "-extra", "extra"); + assertProcessFailure(argProcessor, "-war", "war"); + assertProcessFailure(argProcessor, "-work", "work"); + assertProcessFailure(argProcessor, "-server", MySCL.class.getName()); + } +} Added: releases/1.6/dev/core/test/com/google/gwt/dev/HostedModeTest.java ============================================================================== --- (empty file) +++ releases/1.6/dev/core/test/com/google/gwt/dev/HostedModeTest.java Thu Dec 11 22:39:05 2008 @@ -0,0 +1,102 @@ +package com.google.gwt.dev; + +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.dev.HostedMode.HostedModeOptionsImpl; +import com.google.gwt.dev.jjs.JsOutputOption; +import com.google.gwt.dev.shell.BrowserWidgetHostChecker; +import com.google.gwt.dev.shell.ServletContainer; +import com.google.gwt.dev.shell.ServletContainerLauncher; + +import java.io.File; +import java.net.BindException; + +/** + * Test for {...@link HostedMode}. + */ +public class HostedModeTest extends ArgProcessorTestBase { + + public static class MySCL implements ServletContainerLauncher { + public ServletContainer start(TreeLogger logger, int port, File appRootDir) + throws BindException, Exception { + throw new UnsupportedOperationException(); + } + } + + private final HostedMode.ArgProcessor argProcessor; + private final HostedMode hostedMode; + private final HostedModeOptionsImpl options; + + public HostedModeTest() { + hostedMode = new HostedMode(); + options = hostedMode.options; + argProcessor = hostedMode.new ArgProcessor(); + } + + public void testAllValidArgs() { + assertProcessSuccess(argProcessor, "-port", "8080", "-whitelist", "white", + "-blacklist", "black", "-logLevel", "DEBUG", "-style", "PRETTY", "-ea", + "-XdisableAggressiveOptimization", "-noserver", "-server", + MySCL.class.getName(), "-gen", "myGen", "-war", "myWar", "-workDir", + "myWork", "-extra", "myExtra", "-localWorkers", "2", "-startupUrl", + "http://www.google.com/", "-startupUrl", "foo", "c.g.g.h.H", + "my.Module"); + + assertNotNull(BrowserWidgetHostChecker.matchWhitelisted("white")); + assertNotNull(BrowserWidgetHostChecker.matchBlacklisted("black")); + + assertEquals(new File("myGen").getAbsoluteFile(), + options.getGenDir().getAbsoluteFile()); + assertEquals(new File("myWar"), options.getWarDir()); + assertEquals(new File("myWork"), options.getWorkDir()); + assertEquals(new File("myExtra"), options.getExtraDir()); + + assertEquals(TreeLogger.DEBUG, options.getLogLevel()); + assertEquals(JsOutputOption.PRETTY, options.getOutput()); + assertTrue(options.isEnableAssertions()); + assertFalse(options.isAggressivelyOptimize()); + + assertEquals(2, options.getLocalWorkers()); + + assertEquals(8080, hostedMode.getPort()); + assertTrue(hostedMode.isRunTomcat()); + assertSame(MySCL.class, hostedMode.getServerContainerLauncher().getClass()); + + assertEquals(2, hostedMode.getStartupURLs().size()); + assertEquals("http://www.google.com/", hostedMode.getStartupURLs().get(0)); + assertEquals("foo", hostedMode.getStartupURLs().get(1)); + + assertEquals(2, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + assertEquals("my.Module", options.getModuleNames().get(1)); + } + + public void testDefaultArgs() { + assertProcessSuccess(argProcessor, "c.g.g.h.H"); + + assertEquals(null, options.getGenDir()); + assertEquals(new File("war").getAbsoluteFile(), + options.getWarDir().getAbsoluteFile()); + assertEquals(null, options.getWorkDir()); + assertEquals(null, options.getExtraDir()); + + assertEquals(TreeLogger.INFO, options.getLogLevel()); + assertEquals(JsOutputOption.OBFUSCATED, options.getOutput()); + assertFalse(options.isEnableAssertions()); + assertTrue(options.isAggressivelyOptimize()); + + assertEquals(1, options.getLocalWorkers()); + + assertEquals(8888, hostedMode.getPort()); + assertTrue(hostedMode.isRunTomcat()); + assertNotNull(hostedMode.getServerContainerLauncher()); + + assertEquals(0, hostedMode.getStartupURLs().size()); + + assertEquals(1, options.getModuleNames().size()); + assertEquals("c.g.g.h.H", options.getModuleNames().get(0)); + } + + public void testForbiddenArgs() { + assertProcessFailure(argProcessor, "-out", "www"); + } +} --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---