<?xml version="1.0"?>
<!-- $Id$ -->
<project name="Tapestry Framework JUnit Test Suite" default="run">

  <property name="root.dir" value="../"/>
  
  <property file="${root.dir}/config/Version.properties"/>
  <property file="${root.dir}/config/build.properties"/>
  <property file="${root.dir}/config/common.properties"/>
  
  
  <property name="framework.src.dir" value="${root.dir}/framework/src"/>
  <property name="clover-classes.dir" value=".clover-classes"/>
  <property name="clover-db.dir" value=".clover-db"/>
  <property name="clover.initstring" location="${clover-db.dir}/clover_db"/>
    
  <property name="clover.report.dir" value="../web/doc/clover"/>
  
  <property name="local.lib.dir" value="lib"/>
   
  <path id="compile-tests.classpath">
    <path refid="base.classpath"/>
    <pathelement location="${root.lib.dir}/${framework.jar}"/>    
  </path>
  
  <path id="base.classpath">
  	<fileset dir="${root.lib.dir}">
  		<include name="${contrib.jar}"/>	
  		<include name="${ext.dir}/*.jar"/>
  		<include name="${runtime.dir}/*.jar"/>
  	</fileset>
  	<fileset dir="${ext.dist.dir}">
  		<include name="*.jar"/>
  	</fileset>
    <pathelement location="${jython.dir}/jython.jar"/>
		<fileset dir="${root.lib.dir}">
			<include name="${j2ee.dir}/*.jar"/>
		</fileset>
  </path> 

  <target name="init">
    <mkdir dir="${classes.dir}"/>
  </target>

  <target name="clean">
    <delete dir="${classes.dir}" quiet="true"/>
    <delete dir="${clover-classes.dir}" quiet="true"/>
    <delete dir="${clover-db.dir}" quiet="true"/>
    <delete dir=".private" quiet="true"/>
  </target>

  <target name="compile" depends="init" description="Compile all test classes.">
    <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="on" target="1.1" source="1.3">
      <classpath refid="compile-tests.classpath"/>
    </javac>
  </target>

  <path id="junit.classpath">
    <path location="${classes.dir}"/>
  	 <!-- Add the src directory back in, since package resources needed by
  	      the tests are there.  Also, ensure that the local copy 
  	      of junit/running/excluded.properties overrides the default
  	      copy in junit.jar -->
  	 <path location="${src.dir}"/>
  	 <path refid="compile-tests.classpath"/>
  </path>
  	  
  <target name="run" depends="compile" description="Run the test suite.">
  	<java fork="true" classname="junit.textui.TestRunner"
		failonerror="true">
  		<classpath refid="junit.classpath"/>
		<arg value="org.apache.tapestry.junit.TapestrySuite"/>
		<sysproperty key="org.apache.tapestry.enable-reset-service" value="true"/>
  	</java>
  </target>

  <!-- To run just a single test case, specify -Dtestcase=name -->
  
  <target name="junit" depends="compile" description="Run the test suite.">
      <junit printsummary="no"
          errorProperty="test.failed"
          failureProperty="test.failed"
          fork="true">
          <classpath refid="junit.classpath"/>
          <formatter type="xml"/>
          <formatter type="brief" usefile="false"/>

          <sysproperty key="org.apache.tapestry.enable-reset-service" value="true"/>

          <batchtest todir="${classes.dir}" unless="testcase">
              <fileset dir="${classes.dir}"
                  includes="**/Test*.class"
                  excludes="**/*$$*.class"
              />
          </batchtest>

          <batchtest todir="${classes.dir}" if="testcase">
              <fileset dir="${classes.dir}"
                  includes="**/${testcase}.class"
              />
          </batchtest>

      </junit>

      <fail if="test.failed">Unit tests failed.</fail>
  </target>

  <target name="junitreport">
      <junitreport todir="${classes.dir}">
          <fileset dir="${classes.dir}">
              <include name="TEST-*.xml"/>
          </fileset>
          <report format="frames" todir="${classes.dir}"/>
      </junitreport>
  </target>

  <target name="gui" depends="compile" description="Run the JUnit GUI.">
  	<java fork="true" classname="junit.swingui.TestRunner">
  		<classpath refid="junit.classpath"/>
		<arg value="org.apache.tapestry.junit.TapestrySuite"/>
		<sysproperty key="org.apache.tapestry.enable-reset-service" value="true"/>
  	</java>
  	
  </target>
  

  <path id="clover.classpath">
    <pathelement location="${clover-classes.dir}"/>
    <pathelement location="${clover.dir}/lib/clover.jar"/>
    <path refid="junit.classpath"/>
  </path>
    
  <target name="clover" description="Run the entire Tapestry test suite and construct the Clover report.">
  	<antcall target="run-clover">
  		<param name="suite" value="org.apache.tapestry.junit.TapestrySuite"/>
  	</antcall>
  </target>
  
  <target name="fast-clover" description="Run a subset of the Tapestry test suite (excluding mock unit tests), and construct the Clover report.">
  	<antcall target="run-clover">
  		<param name="suite" value="org.apache.tapestry.junit.BasicTestSuite"/>
  	</antcall>  	
  </target>
   
  <target name="run-clover" depends="compile" description="Run tests and construct the Clover report.">
  	<mkdir dir="${clover-classes.dir}"/>
  	<mkdir dir="${clover-db.dir}"/>
  	
  	<property name="build.compiler"
  		value="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/>
  		
    <javac srcdir="${framework.src.dir}" destdir="${clover-classes.dir}" debug="on" target="1.1">
      <classpath refid="base.classpath"/>
    </javac>
    
    <echo>Executing suite ${suite} ...</echo>
    
    <echo>Clover Run #1:  No logging enabled ...</echo>
    
  	<java fork="true" classname="junit.textui.TestRunner"
		failonerror="true">
  		<classpath refid="clover.classpath"/>
		<arg value="${suite}"/>
		<sysproperty key="org.apache.tapestry.enable-reset-service" value="true"/>
  	</java>
  	
  
    <echo>Clover Run #2: All logging enabled ...</echo>
    
  	<java fork="true" classname="junit.textui.TestRunner"
		failonerror="true">
  		<classpath refid="clover.classpath"/>
		<arg value="${suite}"/>
		<sysproperty key="log4j.configuration" value="log4j-slow.properties"/> 
		<sysproperty key="org.apache.tapestry.enable-reset-service" value="true"/>
  	</java>  	
  	
  	<antcall target="clover-report"/>
</target>

<target name="clover-report">
  	<mkdir dir="${clover.report.dir}"/>
  	  	
  	<java
  		classname="com.cortexeb.tools.clover.reporters.html.HtmlReporter"
  		fork="true">
  		<classpath>
		  	<pathelement location="${clover.dir}/lib/clover.jar"/>
		  	<pathelement location="${clover.dir}/lib/velocity.jar"/>
		</classpath>
		<arg line="--outputdir ${clover.report.dir}"/>
		<arg line="--showSrc"/>
		<arg line="--initstring ${clover.initstring}"/>
		<arg line="--title 'Release ${framework.version}'"/>
  	</java>
  			    
  </target>
  
</project>

