<?xml version="1.0"?>

<project name="testsuite" default="run" basedir=".">
  <!-- The property ${eclipse-home} should be passed into this script -->
  <!-- Set a meaningful default value for when it is not. -->
  <property name="eclipse-home" value="${basedir}\..\.."/>

  <!-- sets the properties eclipse-home, and library-file -->
  <property name="plugin-name" value="org.eclipse.jdt.core.tests.compiler"/>
  <property name="library-file"
            value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>

  <!-- This target holds all initialization code that needs to be done for -->
  <!-- all tests that are to be run. Initialization for individual tests -->
  <!-- should be done within the body of the suite target. -->
  <target name="init">
    <tstamp/>
    <delete>
      <fileset dir="${eclipse-home}" includes="org*.xml"/>
    </delete>
  </target>

  <!-- This target defines the tests that need to be run. -->
  <target name="suite">
	 <condition property="onWin32">
		<and>
			<os family="windows" />
    	</and>
     </condition>  
    <!-- Parser tests -->
    <property name="jdt-parser-folder" 
              value="${eclipse-home}/jdt_parser_folder"/>
    <delete dir="${jdt-parser-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jdt-parser-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.jdt.core.tests.compiler.parser.TestAll"/>
    </ant>

    <!-- Compiler regression tests -->
    <property name="jdt-compiler-folder" 
              value="${eclipse-home}/jdt_compiler_folder"/>
    <delete dir="${jdt-compiler-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jdt-compiler-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.jdt.core.tests.compiler.regression.TestAll"/>
    </ant>

	<antcall target="evaluation_tests"/>
  </target>

 <target name="evaluation_tests" if="onWin32">
    <!-- Evaluation tests -->
    <property name="jdt-eval-folder" 
              value="${eclipse-home}/jdt_eval_folder"/>
    <delete dir="${jdt-eval-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jdt-eval-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.jdt.core.tests.eval.TestAll"/>
    </ant>
 </target>
  <!-- This target holds code to cleanup the testing environment after -->
  <!-- after all of the tests have been run. You can use this target to -->
  <!-- delete temporary files that have been created. -->
  <target name="cleanup">
  </target>

  <!-- This target runs the test suite. Any actions that need to happen -->
  <!-- after all the tests have been run should go here. -->
  <target name="run" depends="init,suite,cleanup">
    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
      <property name="includes" value="org*.xml"/>
      <property name="output-file" value="${plugin-name}.xml"/>
    </ant>
  </target>

</project>
