<?xml version="1.0"?>
<!-- $$Revision: 1.5 $$ -->

<project name="io-utils" basedir=".">

	<!-- Project's directory structure -->
	<property name="home" value="${basedir}" />
	<property name="home.lib" value="${home}/lib" />
	<property name="home.src" value="${home}/src" />

	<!-- Temporary build directroy -->
	<property name="home.build" value="${home}/build" />
	<property name="home.build.classes" value="${home.build}/classes" />
	<property name="home.build.cobertura.ser" value="${home.build}/cobertura.ser" />
	<property name="home.build.inst-classes" value="${home.build}/inst-classes" />
	<property name="home.build.reports" value="${home.build}/reports" />

	<!-- Fileset definitions -->
	<fileset id="libs" dir="${home.lib}">
		<include name="*.jar" />
		<include name="*.zip" />
	</fileset>

	<!-- Classpath -->
	<path id="classpath">
		<fileset refid="libs" />
	</path>

	<!-- Cobertura ant tasks -->
	<taskdef classpathref="classpath" resource="tasks.properties" />

	<!-- ===== -->
	<!-- Tasks -->
	<!-- ===== -->

	<!-- Clean -->
	<target name="clean" description="Deletes all temporaray files created during the compilation.">
		<delete dir="${home.build}" />
	</target>

	<!-- Prepare -->
	<target name="prepare" description="Creates temporary directories required during the compilation.">
		<mkdir dir="${home.build}" />
		<mkdir dir="${home.build.classes}" />
		<mkdir dir="${home.build.inst-classes}" />
		<mkdir dir="${home.build.reports}" />
	</target>

	<!-- Compile -->
	<target name="compile" depends="prepare" description="Compiles main source files only.">

		<javac srcdir="${home.src}" destdir="${home.build.classes}" debug="on">
			<classpath refid="classpath" />
		</javac>
	</target>

	<!-- Run -->
	<target name="run" depends="compile">
		<java fork="true" classname="test.CoberturaHTTPTest">
			<classpath>
				<path location="${home.build.inst-classes}" />
				<!-- <path location="${home.build.classes}" /> -->
				<path refid="classpath" />
			</classpath>
		</java>
	</target>

	<!-- JUnit -->
	<target name="junit" depends="compile" description="Runs the JUnit test cases.">
		<junit printsummary="yes" haltonfailure="no" haltonerror="yes" showoutput="yes">
			<classpath>
				<path location="${home.build.inst-classes}" />
				<!-- <path location="${home.build.classes}" /> -->
				<path refid="classpath" />
			</classpath>

			<formatter type="plain" />

			<test name="test.CoberturaHTTPTest" outfile="build/test-results" />
		</junit>
	</target>

	<!-- Instrument -->
	<target name="instrument" depends="compile" description="Instruments classes for the code coverage test.">
		<cobertura-instrument todir="${home.build.inst-classes}" datafile="${home.build.cobertura.ser}">
			<fileset dir="${home.build.classes}">
				<include name="**/*.class" />
			</fileset>
		</cobertura-instrument>
	</target>

	<!-- Coverage - test -->
	<target name="coverage-test" depends="instrument" description="Runs coverage tests on the junits.">
		<antcall target="junit" />
	</target>

	<!-- Coverage - main -->
	<target name="coverage-main" depends="instrument" description="Runs coverage over the main program.">
		<antcall target="run" />
	</target>

	<!-- Coverage report -->
	<target name="coverage-report">
		<cobertura-report datafile="${home.build.cobertura.ser}" srcdir="${home.test}" destdir="${home.build.reports}" />
	</target>

</project>
