devdaily home | apple | java | perl | unix | directory | blog

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

<?xml version="1.0" encoding="UTF-8"?>

<project name="cobertura.examples.functionaltest1" basedir="." default="help">

	<description>
    Cobertura - http://cobertura.sourceforge.net/
    Copyright (C) 2003 jcoverage ltd.
    Copyright (C) 2005 Mark Doliner
	Copyright (C) 2006 John Lewis
    Cobertura is licensed under the GNU General Public License
    Cobertura comes with ABSOLUTELY NO WARRANTY
    </description>

	<property file="build.properties" />
	
	<path id="project.classpath">
		<path path="${java.class.path}" />
		<!-- 
		The next two should only come into play when running this script directly as
		opposed to being called by a functional test.
		-->
		<pathelement location="../../etc" />
		<pathelement location="../../build/classes" />
		<fileset dir="../../lib">
			<include name="*.jar" />
		</fileset>
	</path>

	<taskdef resource="tasks.properties" classpathref="project.classpath" />

	<target name="help">
		<echo>This example is only used for testing, and is not meant
		<echo>to be run from the command line.  It requires certain 
		<echo>classes to be on the class path to work correctly.
	</target>

	<target name="compile">
		<mkdir dir="${classes.dir}" />
		<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" />
		
		<rmic 
			base="${classes.dir}" 
			classpathref="project.classpath" 
			stubversion="1.2"
			includes="test/first/RemoteListener.class"
			debug="lines,source"
			verify="true"
		/>
	</target>

	<target name="instrument-includes-and-excludes" depends="compile">
		<mkdir dir="${instrumented.dir}" />
		<cobertura-instrument datafile="${basedir}/cobertura.ser" todir="${instrumented.dir}" classpathref="project.classpath">
			<fileset dir="${classes.dir}">
				<include name="**/A.class" />
				<include name="test/first/RemoteListener*.class" />
				<exclude name="**/B.class" />
				<exclude name="**/*Test*" />
			</fileset>
		</cobertura-instrument>

		<path id="test.classpath">
			<path location="${instrumented.dir}" />
		</path>
	</target>

	<target name="instrument-classpath" depends="compile">
		<mkdir dir="${instrumented.dir}" />
		<cobertura-instrument datafile="${basedir}/cobertura.ser" todir="${instrumented.dir}">
			<includeClasses regex="test.*" />
			<excludeClasses regex="test.*.B" />
			<excludeClasses regex=".*Test*" />
			<instrumentationClasspath location="${classes.dir}" />
		</cobertura-instrument>

		<path id="test.classpath">
			<path location="${instrumented.dir}" />
		</path>
	</target>

	<target name="instrument-war" depends="compile">
		<property name="tmp.dir" value="${basedir}/tmp" />
		<property name="this.test.work.dir" location="${tmp.dir}/war" />
		<property name="this.test.wars" location="${tmp.dir}/wars" />
		<property name="this.test.extract" location="${tmp.dir}/extract" />
		<delete dir="${tmp.dir}" />
		<mkdir dir="${tmp.dir}" />

		<!-- Make a jar with a class from each package -->
		<zip destfile="${tmp.dir}/app.jar">
			<fileset dir="${classes.dir}">
				<include name="test/first/A.class" />
				<include name="test/second/B.class" />
				<include name="test/first/RemoteListener*.class" />
			</fileset>
		</zip>
		<!-- TODO: 

		<!-- Make a war file -->
		<!-- This is required by the war task, but it can be empty -->
		<touch file="${tmp.dir}/web.xml" />
		<war destfile="${tmp.dir}/app.war" webxml="${tmp.dir}/web.xml">
			<lib dir="${tmp.dir}">
				<include name="app.jar" />
			</lib>
			<classes dir="${classes.dir}">
				<include name="test/first/B.class" />
				<include name="test/first/Test.class" />
				<include name="test/second/A.class" />
			</classes>
		</war>

		<!-- Instrument the war file -->
		<mkdir dir="${instrumented.dir}" />
		<cobertura-instrument datafile="${basedir}/cobertura.ser" todir="${instrumented.dir}">
			<includeClasses regex="test.*" />
			<excludeClasses regex="test.*.B" />
			<excludeClasses regex=".*Test*" />
			<fileset dir="${tmp.dir}">
				<include name="app.war" />
			</fileset>
		</cobertura-instrument>

		<!-- Unwar and set the classpath to the unwarred stuff -->
		<unwar src="${instrumented.dir}/app.war" dest="${instrumented.dir}" />

		<delete dir="${tmp.dir}" />

		<path id="test.classpath">
			<path location="${instrumented.dir}/WEB-INF/classes" />
			<fileset dir="${instrumented.dir}/WEB-INF/lib">
				<include name="*.jar" />
			</fileset>
		</path>
	</target>

	<target name="test" depends="compile">
		<junit fork="true" dir="${basedir}" haltonfailure="true">
			<classpath refid="test.classpath" />
			<classpath location="${classes.dir}" />
			<classpath path="${java.class.path}" />
			<classpath refid="project.classpath" />

			<formatter type="plain" usefile="false" />
			<test name="test.first.Test" />
		</junit>
	</target>

	<target name="coverage-reports">
		<mkdir dir="${coverage.xml.dir}" />
		<cobertura-report datafile="${basedir}/cobertura.ser" srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />

		<mkdir dir="${coverage.html.dir}" />
		<!-- maxmemory is only specified to test the attribute -->
		<cobertura-report datafile="${basedir}/cobertura.ser" destdir="${coverage.html.dir}" maxmemory="512M">
			<fileset dir="${src.dir}">
				<include name="**/*.java" />
			</fileset>
		</cobertura-report>
	</target>

	<target name="coverage-check">
		<cobertura-check branchrate="34" totallinerate="100" />
	</target>

	<target name="clean">
		<delete dir="${classes.dir}" />
		<delete dir="${instrumented.dir}" />
		<delete dir="${reports.dir}" failonerror="false"/>
		<delete file="cobertura.log" />
		<delete file="cobertura.ser" />
		<delete file="cobertura.ser.lock" />
	</target>

	<target name="test-includes-and-excludes" depends="clean,compile,instrument-includes-and-excludes,test,coverage-reports" />
	<target name="test-classpath" depends="clean,compile,instrument-classpath,test,coverage-reports" />
	<target name="test-war" depends="clean,compile,instrument-war,test,coverage-reports" />
	<target name="all" depends="test-includes-and-excludes,test-classpath" />

</project>




Copyright 1998-2008 Alvin Alexander
All Rights Reserved.
 
devdaily.com is based in louisville, kentucky, and this web site is hosted by godaddy.com