<?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.update.tests.core"/>
  <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
  <property name="class-name" value="org.eclipse.update.tests.AllTests" />
  
  <!-- 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="sniff-folder" value="${eclipse-home}/update_core_sniff_folder"/>
    <delete dir="${sniff-folder}" quiet="true"/>
    
    <ant target="core-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="${class-name}"/>
    </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">

    <property name="email-from" value="Eclipse_Automated_Test@oti.com"/>
    <property name="email-subject" value="Install/Update: Nightly Build Report"/>
    <property name="email-subject-log" value="Install/Update: Nightly .log"/>
    <property name="email-server" value="d25ml04.torolab.ibm.com"/>
    <property name="infile" value="${eclipse-home}/${plugin-name}.xml"/>
    <property name="infile-log" value="${eclipse-home}/workspace/.metadata/.log"/>
      
    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
      <property name="includes" value="org*.xml"/>
      <property name="output-file" value="${plugin-name}.xml"/>
    </ant>
    
    <touch file="${infile-log}"/>

    <mail from="${email-from}" tolist="celek@ca.ibm.com"
          subject="${email-subject}" files="${infile}"
          mailhost="${email-server}"/>

    <mail from="${email-from}" tolist="celek@ca.ibm.com"
          subject="${email-subject-log}" files="${infile-log}"
          mailhost="${email-server}"/>

    <mail from="${email-from}" tolist="celek@rogers.com"
          subject="${email-subject-log}" files="${infile-log}"
          mailhost="${email-server}"/>

    <mail from="${email-from}" tolist="celek@rogers.com"
          subject="${email-subject}" files="${infile}"
          mailhost="${email-server}"/>

  </target>
</project>