<?xml version="1.0"?>

<!--
    Copyright (c) 2009, 2014 IBM Corporation and others.

    This program and the accompanying materials
    are made available under the terms of the Eclipse Public License 2.0
    which accompanies this distribution, and is available at
    https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0
    
    Contributors:
        IBM Corporation - initial API and implementation
 -->

<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.pde.api.tools.tests"/>
  <property name="plugin-dir" value="${eclipse-home}/plugins"/>
  <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 regression tests that need to be run. -->
  <target name="suite">
    <!--API Tools Plugin test suite -->
    <property name="api-tools-plugins-folder" 
              value="${eclipse-home}/api_tools_plugins_folder"/>
    <delete dir="${api-tools-plugins-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
      <!-- Use a subdir 'data' so that the JCL jars are put in jdt-model-folder and are deleted at the end of the tests. -->
      <property name="data-dir" value="${api-tools-plugins-folder}/data"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.pde.api.tools.tests.ApiToolsPluginTestSuite"/>
    </ant>

    <!-- API Tools test suite -->
    <property name="api-tools-folder" 
              value="${eclipse-home}/api_tools_folder"/>
    <delete dir="${api-tools-folder}" quiet="true"/>
    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
	  <!-- Use a subdir 'data' so that the JCL jars are put in jdt-model-folder and are deleted at the end of the tests. -->
      <property name="data-dir" value="${api-tools-folder}/data"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.pde.api.tools.tests.ApiToolsTestSuite"/>
      <property name="vmargs" value="-DrequiredBundles=${plugin-dir}"/>
    </ant>
  </target>
	
  <!-- This target defines the performance tests that need to be run. -->
  <target name="perfsuite">
    <!-- API Tools Performance test suite -->
    <property name="api-tools-plugins-folder" 
              value="${eclipse-home}/api_tools_plugins_folder"/>
    <delete dir="${api-tools-plugins-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <!-- Use a subdir 'data' so that the JCL jars are put in jdt-model-folder and are deleted at the end of the tests. -->
      <property name="data-dir" value="${api-tools-plugins-folder}/data"/>
      <property name="plugin-name" value="${plugin-name}"/>
      <property name="classname" 
                value="org.eclipse.pde.api.tools.tests.ApiToolsPerformanceTestSuite"/>
    </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>

  <!-- This target runs the performance test suites. -->
  <target name="performance" depends="init,perfsuite,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>
