Author: mahadev
Date: Wed Aug 13 14:10:30 2008
New Revision: 685678

URL: http://svn.apache.org/viewvc?rev=685678&view=rev
Log:
ZOOKEEPER-56. Add clover support to build.xml. (Patrick Hunt via mahadev)

Modified:
    hadoop/zookeeper/trunk/build.xml

Modified: hadoop/zookeeper/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/build.xml?rev=685678&r1=685677&r2=685678&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/build.xml (original)
+++ hadoop/zookeeper/trunk/build.xml Wed Aug 13 14:10:30 2008
@@ -21,8 +21,11 @@
 
     <property name="Name" value="ZooKeeper" />
     <property name="name" value="zookeeper" />
+
+    <property environment="env"/>
     
     <property name="version" value="3.0.0" />
+    <property name="final.name" value="${name}-${version}"/>
     <property name="revision.dir" value="${basedir}/.revision" />
     <property name="revision.properties" value="revision.properties" />
     <property file="${basedir}/src/java/${revision.properties}" />
@@ -53,6 +56,9 @@
     <property name="test.output" value="no" />
     <property name="test.timeout" value="900000" />
     <property name="test.junit.output.format" value="plain" />
+    <property name="test.junit.fork.mode" value="perTest" />
+    <property name="test.junit.printsummary" value="yes" />
+    <property name="test.junit.haltonfailure" value="no" />
     <property name="config.dir" value="${src.dir}/java/test/config" />
     <property name="test.junit.maxmem" value="512m" />
     <property name="conf.dir" value="${basedir}/conf"/>
@@ -63,6 +69,25 @@
     <property name="build.docs" value="${build.dir}/docs" />
     <property name="build.javadoc" value="${build.docs}/api" />
 
+    <property name="clover.home" location="${env.CLOVER_HOME}"/>
+    <property name="clover.jar" location="${clover.home}/lib/clover.jar" />
+    <property name="clover.db.dir" location="${test.build.dir}/clover/db"/>
+    <property name="clover.report.dir"
+              location="${test.build.dir}/clover/reports"/>
+
+    <available property="clover.present"
+               classname="com.cenqua.clover.CloverInstr"
+               classpath="${clover.home}/lib/clover.jar"/>
+
+    <!-- check if clover reports should be generated -->
+    <condition property="clover.enabled">
+      <and>
+        <isset property="run.clover"/>
+        <isset property="clover.present"/>
+      </and>
+    </condition>
+
+
     <property name="test.cobertura.output.format" value="html" />
     <property name="coveragereport.dir" value="${build.dir}/cobertura" />
 
@@ -91,6 +116,7 @@
         <path id="project.classpath">
             <fileset dir="${build.classes}" />
             <pathelement path="${lib.dir}/log4j-1.2.15.jar" />
+            <pathelement path="${clover.jar}" />
         </path>
     </target>
     
@@ -182,7 +208,7 @@
         </copy>
     </target>
 
-    <target name="compile" depends="compile-main,compile-extra"/>
+    <target name="compile" depends="clover,compile-main,compile-extra"/>
 
     <target name="test-classpath">
       <path id="test.classpath">
@@ -192,6 +218,7 @@
         <fileset dir="${lib.dir}">
           <include name="*.jar"/>
         </fileset>
+        <pathelement path="${clover.jar}" />
       </path>
     </target>
 
@@ -251,10 +278,12 @@
     <!-- Make zookeeper.jar                                     -->
     <!-- ====================================================== -->
     <target name="jar" depends="compile">
-        <java classname="org.apache.zookeeper.Version" fork="true" 
outputproperty="revision" failonerror="true">
+        <java classname="org.apache.zookeeper.Version" fork="true"
+              outputproperty="revision" failonerror="true">
             <arg value="--revision" />
             <classpath>
                 <pathelement path="${build.classes}" />
+                <pathelement path="${clover.jar}" />
             </classpath>
         </java>
         <exec executable="hostname" outputproperty="host.name"/>
@@ -346,11 +375,14 @@
     </target>
 
     <target name="junit.run">
-        <junit showoutput="${test.output}" printsummary="yes" 
haltonfailure="no"
-               fork="yes" 
-            maxmemory="${test.junit.maxmem}" dir="${basedir}"
-            timeout="${test.timeout}" errorProperty="tests.failed"
-            failureProperty="tests.failed">
+        <junit showoutput="${test.output}"
+               printsummary="${test.junit.printsummary}"
+               haltonfailure="${test.junit.haltonfailure}"
+               fork="yes"
+               forkmode="${test.junit.fork.mode}"
+               maxmemory="${test.junit.maxmem}"
+               dir="${basedir}" timeout="${test.timeout}"
+               errorProperty="tests.failed" failureProperty="tests.failed">
           <sysproperty key="build.test.dir" value="${test.tmp.dir}" />
           <sysproperty key="log4j.configuration"
                        value="file:${basedir}/conf/log4j.properties" />
@@ -395,6 +427,50 @@
     <!-- Run optional third-party tool targets                  -->
     <!-- ====================================================== -->
 
+    <!-- clover code coverage -->
+    <target name="clover" depends="clover.setup, clover.info" 
+            description="Instrument the Unit tests using Clover.  Requires a 
Clover license and CLOVER_HOME environment variable set appropriately.  To use, 
specify -Drun.clover=true on the command line."/>
+
+    <target name="clover.setup" if="clover.enabled">
+      <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/>
+      <mkdir dir="${clover.db.dir}"/>
+      <clover-setup initString="${clover.db.dir}/zookeeper_coverage.db">
+        <fileset dir="${java.src.dir}"
+                 includes="org/apache/zookeeper/**/*"
+                 excludes="org/apache/zookeeper/version/**/*"/>
+      </clover-setup>
+    </target>
+
+    <target name="clover.info" if="run.clover" unless="clover.present">
+      <echo>
+        Clover not found. Code coverage reports disabled.
+      </echo>
+    </target>
+
+    <target name="clover.check">
+      <fail unless="clover.present">
+        ##################################################################
+        Clover not found.
+        Please make sure clover.jar is in ANT_HOME/lib, or made available
+        to Ant using other mechanisms like -lib or CLASSPATH.
+        ##################################################################
+      </fail>
+    </target>
+
+    <target name="generate-clover-reports" depends="clover.check, clover">
+      <mkdir dir="${clover.report.dir}"/>
+      <clover-report>
+        <current outfile="${clover.report.dir}" title="${final.name}">
+          <format type="html"/>
+        </current>
+      </clover-report>
+      <clover-report>
+        <current outfile="${clover.report.dir}/clover.xml" 
title="${final.name}">
+          <format type="xml"/>
+        </current>
+      </clover-report>
+    </target>
+
     <!-- Run with 'ant -Dfindbugs.home="path to Findbugs directory" findbugs 
-->
     <property name="findbugs.home" value="" />
     <target name="findbugs" depends="check-for-findbugs, jar" 
if="findbugs.present">


Reply via email to