<?xml version="1.0"?>

<project name="CVS Automated Tests" default="run" basedir=".">

  <!-- The property ${eclipse-home} should be passed into this script -->
  
  <!-- sets the properties eclipse-home, and library-file -->
  <property name="eclipse-home" value="${basedir}/../../"/>
  <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>

  <!-- get the repository.properties which identify the cvs test repository -->
  <property name="org.eclipse.team.tests.cvs.core" value="org.eclipse.team.tests.cvs.core"/>
  <property name="team-home" value="${eclipse-home}/plugins/${org.eclipse.team.tests.cvs.core}"/>
  <property file="${team-home}/repository.properties"/>
  
  <!-- define the number of times each perfomance test shouldbe run to get an average performance -->
  <property name="performance-loop-count" value="5"/>

  <!-- 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/>
  </target>

  <!-- This target defines the tests that need to be run for regression testing. -->
  <target name="suite">
    <property name="location" value="${eclipse-home}/cvs_sniff_folder"/>
    <delete dir="${location}" quiet="true"/>

    <!-- Session Test ** CVS Provider ** -->
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties -Declipse.cvs.recordProtocolTraffic=true"/>
      <property name="data-dir" value="${location}"/>
      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
      <property name="classname" value="org.eclipse.team.tests.ccvs.core.AllCoreTests"/>
    </ant>
    
    <!-- Session Test ** CVS Provider ** -->
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties -Declipse.cvs.recordProtocolTraffic=true"/>
      <property name="data-dir" value="${location}"/>
      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
      <property name="classname" value="org.eclipse.team.tests.ccvs.core.AllTests"/>
    </ant>

  </target>
  
  <!-- This target defines the performance tests that need to be run. -->
  <target name="performance-suite">
    <property name="cvs-performance-folder" 
              value="${eclipse-home}/cvs_performance_folder"/>
    <delete dir="${cvs-performance-folder}" quiet="true"/>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties -Declipse.cvs.loopCount=20  -Declipse.cvs.recordProtocolTraffic=false"/>
      <property name="data-dir" value="${cvs-performance-folder}"/>
      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
      <property name="classname" 
                value="org.eclipse.team.tests.ccvs.ui.benchmark.SyncTests"/>
    </ant>
    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties -Declipse.cvs.loopCount=20  -Declipse.cvs.recordProtocolTraffic=false"/>
      <property name="data-dir" value="${cvs-performance-folder}"/>
      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
      <property name="classname" 
                value="org.eclipse.team.tests.ccvs.ui.benchmark.WorkflowTests"/>
    </ant>
  </target>
  
  <!-- This target holds code to cleanup the testing environment after the tests -->
  <!-- have been run. You can use this to delete temporary files that are 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="org.eclipse.team.tests.cvs.xml"/>
    </ant>
  </target>

  <!-- This target runs the performance test suite. Any actions that need to happen -->
	
  <!-- after all the tests have been run should go here. -->
  <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="org.eclipse.team.tests.cvs.xml"/>
    </ant>
  </target>

</project>
