blob: 7cf904ed5552ca1711136ac406e8ebc1de731856 [file] [log] [blame]
<?xml version="1.0"?>
<project name="Library" default="usage" basedir=".">
<property environment="env" />
<target name="usage">
<echo message="Please refer to the testframework.html in org.eclipse.test for instructions on usage." />
</target>
<target name="init">
<!--
Parameters:
(Mandatory)
data-dir - the directory for Eclipse to write its data
plugin-name - the name of the plugin to test
classname - the name of the test class
(Optional - overrides defaults set in script)
vmargs - a string containing arguments to pass to the VM.
extraVMargs - allows separate setting of VM args from separate caller.
timeout - overrides default test timeout value (in milliseconds).
test-output - overrides default output file produced from test run.
plugin-path - path to root of plug-in
useEclipseExe - property setting forces test to launch via eclipse executable.
junit-report-output - output directory for junit reports produced for specified classname.
-->
<tstamp>
<format property="TIMENOW" pattern="HHmmssSSSS"/>
</tstamp>
<!--property setting useEclipseExe launches tests using the eclipse executable-->
<condition property="launchTarget" value="eclipse-test">
<isset property="useEclipseExe" />
</condition>
<!--default launch target for launching tests-->
<property name="launchTarget" value="java-test" />
<property name="formatter" value="org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter"/>
<!--default heap sizes when running performance tests-->
<condition property="vmargs" value=" -Xms256M -Xmx256M">
<equals arg1="${test.target}" arg2="performance" />
</condition>
<property name="extraVMargs" value=""/>
<property name="plugin-path" value="" />
<property name="timeout" value="7200000" />
<property name="test-output" value="${eclipse-home}/${classname}.xml" />
<property name="junit-report-output" value="${eclipse-home}/results" />
<mkdir dir="${junit-report-output}"/>
</target>
<target name="core-test" description="Eclipse application used to launch HEADLESS plugin tests." depends="init">
<antcall target="${launchTarget}">
<param name="application" value="org.eclipse.test.coretestapplication"/>
</antcall>
</target>
<target name="ui-test" description="Eclipse application used to launch UI plugin tests." depends="init">
<antcall target="${launchTarget}">
<param name="application" value="org.eclipse.test.uitestapplication"/>
</antcall>
</target>
<target name="java-test">
<!--default vm args-->
<property name="vmargs" value=" -Xms40m -Xmx256m"/>
<!--set default jvm to use for testing-->
<property name="jvm" value="${java.home}/bin/java" />
<echo message="Running ${classname}. Result file: ${junit-report-output}/${classname}.xml."/>
<java fork="true" dir="." timeout="${timeout}" jvm="${jvm}" logError="true"
classname="org.eclipse.core.launcher.Main" output="${junit-report-output}/${classname}.txt">
<classpath>
<fileset dir="${eclipse-home}/plugins">
<include name="org.eclipse.equinox.launcher_*.jar"/>
</fileset>
</classpath>
<arg line="-application ${application}"/>
<arg line="-data ${data-dir}"/>
<arg line="formatter=${formatter},${test-output}"/>
<arg line="-testPluginName ${plugin-name}"/>
<arg line="-className ${classname}"/>
<arg line="-os ${os}"/>
<arg line="-ws ${ws}"/>
<arg line="-arch ${arch}"/>
<arg line="-consolelog"/>
<jvmarg line="${vmargs} ${extraVMargs}"/>
<sysproperty key="PLUGIN_PATH" value="${plugin-path}"/>
</java>
<antcall target="collect-results" />
</target>
<target name="eclipse-test" description="Runs the specified classname as a plug-in test.">
<property name="vmargs" value="-Xms256m -Xmx512m"/>
<!--use -consolelog if launching a headless test-->
<condition property="consolelog" value="-consolelog">
<equals arg1="${application}" arg2="org.eclipse.test.coretestapplication"/>
</condition>
<property name="consolelog" value="" />
<!--
vm selection priority:
1. user-specified java executable via outer Ant property setting of "jvm".
2. java executable on path.
-->
<condition property="test-vm" value="-vm ${jvm}">
<isset property="jvm" />
</condition>
<property name="test-vm" value="" />
<!--ensure executable has execute permission-->
<chmod file="${eclipse-home}/eclipse" perm="ugo+rx"/>
<echo message="Running ${classname}" />
<echo message="Result file: ${junit-report-output}/${classname}.xml."/>
<echo message="DISPLAY: ${env.DISPLAY}" />
<exec executable="${eclipse-home}/eclipse" dir="${eclipse-home}" timeout="${timeout}" logError="true" failonerror="false" >
<arg line="-data ${data-dir}"/>
<arg line="${test-vm}"/>
<arg line="-application ${application}"/>
<arg line="formatter=${formatter},${test-output}"/>
<arg line="-testPluginName ${plugin-name}"/>
<arg line="-className ${classname}"/>
<arg line="-nosplash"/>
<arg line="-suppressErrors"/>
<arg line="${consolelog}"/>
<arg line="-vmargs ${vmargs} ${extraVMargs} -DPLUGIN_PATH=${plugin-path}"/>
<env key="DISPLAY" value="${env.DISPLAY}" />
<redirector output="${junit-report-output}/${classname}.output.txt" error="${junit-report-output}/${classname}.error.txt"/>
</exec>
<antcall target="collect-results" />
</target>
<target name="collect-results">
<dirname property="output-dir" file="${test-output}"/>
<basename property="output-file-name" file="${test-output}"/>
<junitreport todir="${junit-report-output}" tofile="${classname}.xml">
<fileset dir="${output-dir}">
<include name="${output-file-name}"/>
</fileset>
</junitreport>
<style style="${eclipse-home}/plugins/org.eclipse.test/JUNIT.XSL"
basedir="${junit-report-output}"
includes="${classname}.result.xml"
destdir="${junit-report-output}" />
<!--save .log content and *.log content from configuration directory-->
<concat destfile="${junit-report-output}/${classname}.log">
<fileset dir="${eclipse-home}" includes="${data-dir}/.metadata/*.log"/>
<fileset dir="${eclipse-home}" includes="configuration/*.log"/>
</concat>
</target>
<target name="collect">
<!--
This target can be used to aggragate test runs from multiple test suites into a single report.
Parameters to this target:
includes - the names of the files to include
output-file - the name of the output file to produce
-->
<junitreport todir="." tofile="${output-file}">
<fileset dir=".">
<include name="${includes}"/>
</fileset>
</junitreport>
</target>
<target name="test-regressions">
<!--
Parameters to this target:
oldfile - the name of the baseline XML file to test against
newfile - the name of the XML file containing most recent test results
outfile - the name of the file produced
-->
<echo message="Running Regression Tests"/>
<property name="test-plugin-dir" value="${basedir}/fragments/org.eclipse.test"/>
<property name="rt-stylesheet" value="${test-plugin-dir}/regression-test.xsl"/>
<property name="rt-classname" value="org.eclipse.test.RegressionTest"/>
<!-- Ensure that the file exists, and give sensible behaviour if not -->
<style style="${rt-stylesheet}" in="${newfile}" out="${newfile}.tmp"/>
<style style="${rt-stylesheet}" in="${oldfile}" out="${oldfile}.tmp"/>
<java classname="${rt-classname}">
<classpath>
<pathelement location="${test-plugin-dir}/bin"/>
</classpath>
<arg value="${oldfile}.tmp"/>
<arg value="${newfile}.tmp"/>
<arg value="${outfile}"/>
</java>
<delete file="${oldfile}.tmp"/>
<delete file="${newfile}.tmp"/>
</target>
<target name="notfiy">
<!--
Parameters to this target:
infile - the name of the file that contains the message body
address - the e-mail address to notify
-->
<echo message="Sending Notification"/>
<property name="email-from" value="Eclipse Automated Test@oti.com"/>
<property name="email-subject" value="Nightly Build Report"/>
<property name="email-server" value="mail.ott.oti.com"/>
<mail from="${email-from}" tolist="${address}"
subject="${email-subject}" files="${infile}"
mailhost="${email-server}"/>
</target>
</project>