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

<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}\..\.."/>
  <property name="org.eclipse.jdt.ui.tests" value="org.eclipse.jdt.ui.tests_3.1.0"/>

  <!-- sets the properties eclipse-home, and library-file -->
  <property name="plugin-name" value="org.eclipse.jdt.ui.tests"/>
  <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">
    <property name="jdt-folder" 
              value="${eclipse-home}/jdt_folder"/>
    <delete dir="${jdt-folder}" quiet="true"/>
   	<condition property="os.isWindows">
    	<os family="windows"/>
  	</condition>

  	
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jdt-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.jdt.ui.tests.AutomatedSuite"/>
    </ant>
    
  </target>
  
    <!-- leak test target -->
  <target name="leaksuite" depends="checkOS" if="os.isWindows">
    <property name="jdt-folder" value="${eclipse-home}/jdt_folder"/>

    <delete dir="${jdt-folder}" quiet="true"/>
    <copy file="${eclipse-home}/plugins/${org.eclipse.jdt.ui.tests}/leaks/ProfileNatives.dll" todir="${java.home}/bin" />	
    
	<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jdt-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="vmargs" value="-Xint -XrunProfileNatives"/>
      <property name="classname" value="org.eclipse.jdt.ui.tests.LeakTestSuite"/>
    </ant>
  </target>

  <target name="checkOS">
   	<condition property="os.isWindows">
    	<os family="windows"/>
  	</condition>
  </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,leaksuite,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>

  <!-- performance test target -->
  <target name="performance-suite">
    <property name="jdt-ui-performance-folder" value="${eclipse-home}/jdt_ui_performance_folder"/>
    <property name="data-dir" value="${jdt-ui-performance-folder}"/>
    <property name="plugin-name" value="${plugin-name}"/>
    
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.PerformanceTestSuite"/>
    </ant>
    
    <!-- run the package explorer perf test 5 time -->
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
    </ant>
    
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
    </ant>
    
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
    </ant>
    
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
    </ant>
    
    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
    </ant>
  	
  </target>
		
  <!-- This target runs the performance test suites. -->
  <target name="performance" depends="init,performance-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>
