]> source.dussan.org Git - vaadin-framework.git/commitdiff
#7810 Server side test coverage reporting
authorLeif Åstrand <leif@vaadin.com>
Wed, 19 Oct 2011 13:57:32 +0000 (13:57 +0000)
committerLeif Åstrand <leif@vaadin.com>
Wed, 19 Oct 2011 13:57:32 +0000 (13:57 +0000)
svn changeset:21753/svn branch:6.7

build/build.xml
tests/test.xml

index 0b2481ae81fefc93322607d786370cd9142907e2..acb9d83f8a70ea9182f75af240468ca70fb86888 100644 (file)
     <!-- Locations of Ant task JARs - build properties not yet read at this point -->
     <property name="ant.task.jar.antcontrib" value="build/lib/ant-contrib-1.0b3.jar" />
     <property name="ant.task.jar.maven" value="build/lib/maven-ant-tasks-2.0.10.jar" />
+       
+       <path id="emma.lib" >
+               <pathelement location="build/lib/emma_ant.jar" />
+               <pathelement location="build/lib/emma-2.0.5312-patched.jar" />
+       </path>
+       
+       <taskdef resource="emma_ant.properties" classpathref="emma.lib" />      
 
     <!-- ant contrib required for flow control (for loop, if, property override)   -->
     <!-- Note that we have to use a namespace to avoid clash when running sub-ant. -->
         <!-- Create result dir unless already exists -->
         <mkdir dir="${result-path}" />
 
+        <!-- Create dirs that might be used by the test coverage generation -->
+       <mkdir dir="${result-path}/war_emma_classes" />
+       <mkdir dir="${result-path}/junit_emma_classes" />
+       <mkdir dir="${result-path}/coverage" />
+
         <echo>We are using gwt version ${gwt-version}.</echo>
 
         <!-- Destination files -->
             <fileset dir="lib/core">
                 <include name="jetty/**/*" />
             </fileset>
+               <fileset dir="build/lib">
+                       <include name="emma-2.0.5312-patched.jar" />
+               </fileset>
         </copy>
 
         <!-- Add WebContent -->
         <mkdir dir="${output-dir}/META-INF"/>
         <echo file="${output-dir}/META-INF/VERSION">${version.full}</echo> 
         <echo file="${output-dir}/META-INF/GWT-VERSION">${gwt-version}</echo> 
+               
+               <emma enabled="${emma.enabled}" >
+                       <instr instrpath="${result-path}/classes"
+                               destdir="${result-path}/war_emma_classes"
+                               mode="copy"
+                               metadatafile="${result-path}/war.es"
+                               merge="false"
+                       >
+                               <filter includes="com.vaadin.*" />
+                               <filter excludes="com.vaadin.terminal.gwt.*" />
+                               <filter excludes="com.vaadin.tests.*" />
+                               <filter excludes="*Test*" />
+                               <filter excludes="com.vaadin.launcher.*" />
+                               <filter excludes="com.vaadin.data.util.sqlcontainer.*" />
+                       </instr>
+               </emma>         
+       
         <jar jarfile="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}"
-             compress="true" manifest="build/package/META-INF/MANIFEST.MF">
+             compress="true" manifest="build/package/META-INF/MANIFEST.MF" duplicate="preserve">
             <metainf dir="${output-dir}/META-INF"/>
             <manifest>
                 <attribute name="Vaadin-Package-Version" value="1" />
                 <attribute name="GWT-Version-Dependencies" value="${gwt-version-dependencies}" />
                 <attribute name="Bundle-Version" value="${version.full}" />
             </manifest>
+            <!-- Include any instrumented class files before the normal classes -->
+            <fileset dir="${result-path}/war_emma_classes">
+                <patternset>
+                    <exclude name="${toolkit-package}/tests/**"/>
+                    <exclude name="${toolkit-package}/launcher/**" />
+                </patternset>
+            </fileset>
             <fileset dir="${result-path}/classes">
                 <patternset>
                     <exclude name="${toolkit-package}/tests/**"/>
             <antcall inheritrefs="true" inheritall="true" target="testbench-tests"></antcall>
             <antcall inheritrefs="true" inheritall="true" target="server-side-tests"></antcall>
         </parallel>
+        
+        <!-- Create a combined report from each test's sub report -->
+               <emma enabled="${emma.enabled}" >
+                       <merge file="${result-path}/combined.es">
+                               <fileset dir="${result-path}" >
+                                       <include name="*.ec" />
+                                       <include name="*.em" />
+                               </fileset>
+                       </merge>
+                       <report sourcepath="${result-path}/src/core" >
+                               <fileset dir="${result-path}" >
+                                       <include name="combined.es" />
+                               </fileset>
+                               
+                               <txt outfile="../${result-path}/coverage/coverage-combined/coverage.txt" />
+                               <html outfile="../${result-path}/coverage/coverage-combined/coverage.html" />
+                       </report>
+               </emma>                 
+        <echo>##teamcity[publishArtifacts '${result-path}/coverage']</echo>
     </target>
     
     <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
     <target name="server-side-tests" unless="tests.serverside.skip">
+               <emma enabled="${emma.enabled}" >
+                       <instr instrpath="${result-path}/classes"
+                               mode="copy"
+                               destdir="${result-path}/junit_emma_classes"
+                               metadatafile="${result-path}/unittests.em"
+                               merge="false"
+                       >
+                               <filter includes="com.vaadin.*" />
+                               <filter excludes="com.vaadin.tests.*" />
+                               <filter excludes="com.vaadin.terminal.gwt.*" />
+                               <filter excludes="*Test*" />
+                               <filter excludes="com.vaadin.launcher.*" />
+                       </instr>
+               </emma>                 
         <junit printsummary="yes"> 
             <classpath> 
+                <pathelement path="${result-path}/junit_emma_classes" />
                 <pathelement path="${result-path}/classes" />
+               <path refid="emma.lib" />
                 <path refid="compile.classpath"/>
             </classpath>
+               <jvmarg value="-Demma.coverage.out.file=../${result-path}/unittests.ec" />
 
             <batchtest fork="yes">
                 <fileset dir="tests/server-side" includes="**/*.java" excludes="**/Abstract*.java" />
                 <fileset dir="tests/client-side" includes="**/*.java" excludes="**/Abstract*.java" />
             </batchtest>
         </junit>
+               <emma enabled="${emma.enabled}" >
+                       <report sourcepath="${result-path}/src/core" >
+                               <fileset dir="${result-path}" >
+                                       <include name="unittests.*" />
+                               </fileset>
+                               
+                               <txt outfile="../${result-path}/coverage/coverage-unittests/unittests_coverage.txt" />
+                               <html outfile="../${result-path}/coverage/coverage-unittests/unittests_coverage.html" />
+                       </report>
+       </emma>
+        <echo>##teamcity[publishArtifacts '${result-path}/coverage']</echo>
     </target>
 
     <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
             <property name="com.vaadin.testbench.debug" value="${com.vaadin.testbench.debug}"/>
             <property name="com.vaadin.testbench.screenshot.block.error" value="${com.vaadin.testbench.screenshot.block.error}"/>
         </ant>
+       
+               <emma enabled="${emma.enabled}" >
+                       <report sourcepath="${result-path}/src/core" >
+                               <fileset dir="${result-path}" >
+                                       <include name="war.*" />
+                               </fileset>
+                               
+                               <txt outfile="../${result-path}/coverage/coverage-testbench/testbench_coverage.txt" />
+                               <html outfile="../${result-path}/coverage/coverage-testbench/testbench_coverage.html" />
+                       </report>
+               </emma>         
+        <echo>##teamcity[publishArtifacts '${result-path}/coverage/']</echo>
     </target>
 
     <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
index 5a7424056de00b60de823deac50f46f05b66b3f3..3b8b0dc50c78db287929c2670b1c8d13aac96ea9 100644 (file)
@@ -40,6 +40,7 @@
        <!-- classpath must include test bench jar and its dependencies -->
        <path id="classpath">
                <fileset dir="${com.vaadin.testbench.lib.dir}" includes="**/*.jar" />
+               <fileset dir="../build/lib" includes="emma*.jar" />
        </path>
 
        <!-- fileset containing all TestBench tests to run -->
        </target>
 
        <target name="server-stop">
+               <sleep seconds="5" />
                <exec executable="python" dir=".." searchpath="true" resultproperty="server.stop.result">
                        <arg value="build/testing/vaadin-server.py" />
                        <arg value="stop" />
                </exec>
+               <move file="${testing.testarea}/${package.name}/war.ec" todir="../build/result" />
        </target>
 
        <!-- ================================================================== -->