Recommitting r6449 (Adds basic test case for SOYC) with fix. Compiled user files are now added to javac.junit.out instead of javac.out to prevent rebuilding of dev.

Patch by: kprobst
Review by: jlabanca (pair programmed incremental change from r6449)



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6463 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/build.xml b/dev/build.xml
index 2fb3d2a..ae7b7aa 100755
--- a/dev/build.xml
+++ b/dev/build.xml
@@ -16,7 +16,7 @@
     </delete>
   </target>
 
-  <target name="compile.tests" depends="build, compile.emma.if.enabled" description="Compiles the test code for this project">
+  <target name="compile.tests" depends="build, compile.emma.if.enabled, build.alldeps.jar" description="Compiles the test code for this project">
     <mkdir dir="${javac.junit.out}" />
     <gwt.javac srcdir="" destdir="${javac.junit.out}">
       <src path="core/src" />
@@ -27,6 +27,20 @@
         <pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
       </classpath>
     </gwt.javac>
+    <gwt.javac srcdir="${gwt.root}/user/src" destdir="${javac.junit.out}">
+      <classpath>
+        <pathelement location="${javac.out}" />
+        <pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" />
+        <pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
+        <pathelement location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
+        <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
+        <pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
+        <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3.jar" />
+        <pathelement location="${gwt.build.lib}/gwt-dev-${build.host.platform}.jar" />
+        <pathelement location="${alldeps.jar}" />
+      </classpath>
+    </gwt.javac>
+
   </target>
 
   <target name="build.alldeps.jar" description="Merges all dependency jars into a single jar">
@@ -153,7 +167,7 @@
     <touch file="${filter.sentinel}" />
   </target>
 
-  <target name="compiler.standalone" description="Validates that the standalone gwt-compiler project can build.">
+  <target name="compiler.standalone" depends="build.alldeps.jar" description="Validates that the standalone gwt-compiler project can build.">
     <mkdir dir="${javac.out}" />
     <gwt.javac srcdir="core/super" excludes="com/google/gwt/dev/jjs/intrinsic/"/>
     <gwt.javac srcdir="core/src">
@@ -238,6 +252,8 @@
         <!-- Pull in gwt-dev and gwt-user sources for .gwt.xml files -->
         <pathelement location="${gwt.root}/user/src/" />
         <pathelement location="${gwt.root}/user/super/" />
+        <!-- CompilerTest compiles the hello sample. -->
+        <pathelement location="${gwt.root}/samples/hello/src/" />
       </extraclasspaths>
     </gwt.junit>
   </target>
diff --git a/dev/core/test/com/google/gwt/dev/SoycTest.java b/dev/core/test/com/google/gwt/dev/SoycTest.java
new file mode 100644
index 0000000..e142b35
--- /dev/null
+++ b/dev/core/test/com/google/gwt/dev/SoycTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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;
+
+import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.dev.Compiler.CompilerOptionsImpl;
+import com.google.gwt.dev.util.Util;
+import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
+import com.google.gwt.util.tools.Utility;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Test for {@link Compiler} with option -soyc.
+ */
+public class SoycTest extends TestCase {
+
+  private final CompilerOptionsImpl options = new CompilerOptionsImpl();
+
+  public void testSoyc() throws UnableToCompleteException, IOException {
+    options.setSoycEnabled(true);
+    options.addModuleName("com.google.gwt.sample.hello.Hello");
+    options.setWarDir(Utility.makeTemporaryDirectory(null, "hellowar"));
+    PrintWriterTreeLogger logger = new PrintWriterTreeLogger();
+    new Compiler(options).run(logger);
+
+    // make sure the files have been produced
+    assertTrue(new File(options.getWarDir() + "/hello/compile-report/index.html").exists());
+    assertTrue(new File(options.getWarDir() + "/hello/compile-report/SoycDashboard-0-index.html").exists());
+    assertTrue(new File(options.getWarDir() + "/hello/compile-report/total-0-overallBreakdown.html").exists());
+    assertTrue(new File(options.getWarDir() + "/hello/compile-report/soycStyling.css").exists());
+
+    assertFalse(new File(options.getWarDir() + "/hello/compile-report/index2.html").exists());
+    Util.recursiveDelete(options.getWarDir(), false);
+  }
+}