Added emma code coverage generation to the build file.  ant emma test emma.merge will generate emma reports for each test, then merge them.  This is a resubmit of r5781 after verifying all remoteweb tests pass.

Patch by: jlabanca
Review by: fabbott



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5798 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/build.xml b/build.xml
index 8fbc6c5..858db11 100755
--- a/build.xml
+++ b/build.xml
@@ -5,6 +5,7 @@
 
   <!-- "build" is the default when subprojects are directly targetted  -->
   <property name="target" value="build" />
+  <property name="emma.merged.out" value="${project.build}/emma-coverage" />
 
   <!-- 
      Convenience for the lateral calls we make.  Use gwt.ant to
@@ -127,6 +128,39 @@
     <call-subproject subproject="tools" subtarget="test" />
   </target>
 
+  <path id="emma.classpath.src">
+    <pathelement location="${gwt.root}/user/src" />
+    <pathelement location="${gwt.root}/dev/**/src/com/google" />
+    <pathelement location="${gwt.root}/build-tools/**/src/com/google" />
+    <pathelement location="${gwt.root}/tools/**/src/com/google" />
+  </path>
+
+  <target name="emma.merge" description="Merges coverage data for all projects" if="emma.enabled">
+    <delete dir="${emma.merged.out}" />
+    <mkdir dir="${emma.merged.out}" />
+    <emma>
+      <merge outfile="${emma.merged.out}/merged.emma" >
+        <fileset dir="${project.build}" >
+          <include name="**/*.emma" />
+          <exclude name="**/merged.emma" />
+        </fileset>
+      </merge>
+    </emma>
+    <emma enabled="${emma.enabled}">
+      <report sourcepath="${emma.classpath.src}">
+        <fileset dir="${project.build}">
+          <patternset>
+            <include name="**/metadata.emma"/>
+          </patternset>
+        </fileset>
+        <fileset file="${emma.merged.out}/merged.emma" />
+        <txt outfile="${emma.merged.out}/coverage.txt" />
+        <html outfile="${emma.merged.out}/coverage.html" />
+        <xml outfile="${emma.merged.out}/coverage.xml" />
+      </report>
+    </emma>
+  </target>
+
   <target name="clean" description="[action] Cleans the entire GWT build">
     <delete dir="${gwt.build}" />
   </target>