<?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.ajdt.ui.visual.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="${plugin-name}.xml"/>
      <fileset dir="${eclipse-home}" includes="${plugin-name}.*Test*.xml"/>
    </delete>
  </target>

  <!-- This target defines the tests that need to be run. -->
  <target name="suite">
    <property name="session-folder" 
              value="${eclipse-home}/ui_session_sniff_folder"/>
    <delete dir="${session-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${session-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.ajdt.ui.visual.tests.AllVisualTests"/>
  
    </ant>
    
    <!-- Commented out until source of problem found (not reusing same workspace dir)
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${session-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname"
                value="org.eclipse.ui.tests.api.SessionRestoreTest"/>
    </ant>
    -->

    <!--
    <property name="sniff-folder"
              value="${eclipse-home}/ui_sniff_folder"/>
    <delete dir="${sniff-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${sniff-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname"
                value="org.eclipse.ui.tests.UiTestSuite"/>

    </ant>
    -->

    <!--
    <property name="jface-sniff-folder"
              value="${eclipse-home}/jface_sniff_folder"/>
    <delete dir="${jface-sniff-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="data-dir" value="${jface-sniff-folder}"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname"
                value="org.eclipse.jface.tests.viewers.AllTests"/>
    </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="${plugin-name}.*Test*.xml"/>
      <property name="output-file" value="${plugin-name}.xml"/>
    </ant>
  </target>

</project>
