Author: jbellis
Date: Mon Apr 6 18:00:43 2009
New Revision: 762442
URL: http://svn.apache.org/viewvc?rev=762442&view=rev
Log:
add cobertura support ('ant codecoverage -Dcobertura.dir=/path/to/cobertura').
patch by johano; reviewed by jbellis for #55
Modified:
incubator/cassandra/trunk/build.xml
Modified: incubator/cassandra/trunk/build.xml
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/build.xml?rev=762442&r1=762441&r2=762442&view=diff
==============================================================================
--- incubator/cassandra/trunk/build.xml (original)
+++ incubator/cassandra/trunk/build.xml Mon Apr 6 18:00:43 2009
@@ -14,10 +14,19 @@
<property name="test.classes" value="${build.dir}/test/classes"/>
<property name="final.name" value="cassandra"/>
+ <!-- http://cobertura.sourceforge.net/ -->
+ <property name="cobertura.build.dir" value="${build.dir}/cobertura"/>
+ <!-- can't include due to licensing, specify jar via command line -->
+ <property name="cobertura.dir" value="/tmp"/>
+ <property name="cobertura.report.dir"
value="${cobertura.build.dir}/report"/>
+ <property name="cobertura.classes.dir"
value="${cobertura.build.dir}/classes"/>
+ <property name="cobertura.datafile"
value="${cobertura.build.dir}/cobertura.ser"/>
+
<!--
Add all the dependencies.
-->
<path id="cassandra.classpath">
+ <pathelement location="${cobertura.classes.dir}"/>
<pathelement location="${build.classes}"/>
<fileset dir="${build.lib}">
<include name="**/*.jar" />
@@ -89,8 +98,10 @@
<!--
The build target builds all the .class files
-->
- <target depends="build-subprojects,build-project" name="build"/>
+ <target name="build" depends="build-subprojects,build-project"/>
<target name="build-subprojects"/>
+ <target name="codecoverage"
depends="cobertura-instrument,test,cobertura-report"/>
+
<target depends="init,gen-cli-grammar,gen-cql-grammar"
name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" debuglevel="${debuglevel}"
destdir="${build.classes}">
@@ -136,15 +147,53 @@
<testng outputDir="${build.dir}/test/output"
haltOnFailure="true"
verbose="2">
+ <sysproperty key="net.sourceforge.cobertura.datafile"
file="${cobertura.datafile}"/>
<jvmarg value="-Dstorage-config=test/conf"/>
<classpath>
+ <pathelement location="${cobertura.classes.dir}"/>
<path refid="cassandra.classpath" />
<pathelement location="${test.classes}"/>
+ <pathelement location="${cobertura.dir}/cobertura.jar"/>
</classpath>
<classfileset dir="${test.classes}" includes="**/*.class" />
</testng>
</target>
+ <!-- instruments the classes to later create code coverage reports -->
+ <target name="cobertura-instrument" depends="build,build-test">
+ <taskdef resource="tasks.properties">
+ <classpath>
+ <fileset dir="${cobertura.dir}">
+ <include name="cobertura.jar" />
+ <include name="lib/**/*.jar" />
+ </fileset>
+ </classpath>
+ </taskdef>
+
+ <delete file="${cobertura.datafile}"/>
+
+ <cobertura-instrument todir="${cobertura.classes.dir}"
datafile="${cobertura.datafile}">
+ <ignore regex="org.apache.log4j.*"/>
+
+ <fileset dir="${build.classes}">
+ <include name="**/*.class"/>
+ <exclude name="**/*Test.class"/>
+ <exclude name="**/*TestCase.class"/>
+ <exclude name="**/test/*.class"/>
+ <exclude name="${cobertura.excludes}"/>
+ </fileset>
+
+ </cobertura-instrument>
+ </target>
+
+ <!-- create both html and xml code coverage reports -->
+ <target name="cobertura-report">
+ <cobertura-report format="html" destdir="${cobertura.report.dir}"
srcdir="${build.src}"
+ datafile="${cobertura.datafile}"/>
+ <cobertura-report format="xml" destdir="${cobertura.report.dir}"
srcdir="${build.src}"
+ datafile="${cobertura.datafile}"/>
+ </target>
+
<target name="javadoc" depends="init">
<tstamp>
<format property="YEAR" pattern="yyyy"/>