| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright (c) 2001,2015 IBM Corporation and others. |
| All rights reserved. This program and the accompanying materials |
| are made available under the terms of the Eclipse Public License v1.0 |
| which accompanies this distribution, and is available at |
| http://www.eclipse.org/legal/epl-v10.html |
| |
| Contributors: |
| IBM Corporation - initial API and implementation |
| --> |
| |
| <project |
| name="Library" |
| default="usage" |
| basedir="."> |
| |
| <target name="usage"> |
| <echo message="Please refer to http://wiki.eclipse.org/Platform-releng/Eclipse_Test_Framework for instructions on usage." /> |
| </target> |
| |
| <target |
| name="init" |
| unless="testframeworkinitialized"> |
| <!-- |
| |
| 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 - added to (or overrides) defaults set in infrastructure scripts) |
| |
| vmargs (1) - a string containing arguments to pass to the VM. These |
| parameters should be specific, but permanent, to the test plugin |
| that uses them. For example, a jdt core test plugin might use |
| vmargs="-DstoreMemory=jdtcoremodel_mem_trace,dir=${basedir}/../..". |
| Note, normally test plugins do not need to specify -Xmx |
| or -XX:MaxPermSize type parameters as they are set by |
| the test infrastructure depending machine, OS, VM version, etc, |
| unless of course the test plugins needs especially low or high values, |
| as part of the test. |
| |
| extraVMargs (1) - allows separate setting of VM args in a setting other than |
| the production runs of automated tests. Should not normally be |
| "hard coded" in to the test plugin itself, but instead reserved |
| for someone to add arguments in some other setting other then |
| the production test environment. For example, |
| a committer to jdt.core might want to do a quick test before |
| a commit, and use |
| extraVMargs="-Dcompliance=1.7" |
| in some local version of testing scripts. |
| |
| timeout - overrides default test timeout value (in milliseconds). [May not currently override default?] |
| |
| test-output - overrides default output file produced from test run. [May not currently override default?] |
| |
| plugin-path - path to root of plug-in |
| |
| useEclipseExe - property setting forces test to launch via eclipse executable. [Not fully supported. See bug 387638.] |
| |
| junit-report-output - output directory for junit reports produced for specified classname. |
| |
| |
| (Environment Variables - environment variables that the test framework uses or passes through) |
| |
| ANT_OPTS (1) - Carry through the ANT_OPTS environment variable settings, if any. As described in |
| http://ant.apache.org/manual/running.html |
| <quote> |
| ANT_OPTS - command-line arguments that should be passed to the JVM. |
| For example, you can define system properties or set the |
| maximum Java heap size here. |
| </quote> |
| This can be important for some environments such as running tests on eclipse.org Hudson, |
| where proxy servers, etc., can be defined for that Hudson instance by the machine itself. |
| |
| (Reserved - documented here for awareness, but reserved for use by the test infrastructure |
| itself. The test infrastructure sets these based on typical, common, or required values |
| for the production test environment.) |
| |
| frameworkvmargs (1) - vm args provided by the automated test infrastructure. Normally, these arguments |
| provide parameters for cases that apply to all test suites as ran in a production environment, |
| such as -Xms, -Xmx, -XX:MaxPermSize, -XstartOnFirstThread |
| where these values may vary based on machine or VM being used. |
| |
| loglocation - some VMs allow crash log location to specified as VM parameter (but, |
| pretty special, limited usefulness and may be removed. |
| |
| Notes: |
| |
| 1) Note how vm arguments are ordered. The vm arguments variables are combined in order: |
| |
| ${frameworkvmargs} ${ANT_OPTS} ${vmargs} ${extraVMargs} |
| |
| Typically (as far as is known) if the same argument is specified twice, |
| the one appearing last in the line takes priority. For example, if |
| vmargs specified -Dtestarg=one and |
| extraVMargs specified -Dtestarg=two, |
| then "two" could be the value of the testarg property at runtime. |
| |
| --> |
| <property environment="env" /> |
| |
| <condition |
| property="envantopts" |
| value="${env.ANT_OPTS}" |
| else=""> |
| <isset property="env.ANT_OPTS" /> |
| </condition> |
| |
| |
| <echo message="ANT_OPTS: ${env.ANT_OPTS}" /> |
| |
| <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" /> |
| |
| <tstamp prefix="NOW" /> |
| <property |
| name="coverage-output" |
| value="${eclipse-home}/coverage" /> |
| <property file="${basedir}/finalPluginsVersions.properties" /> |
| <echo message="basedir = ${basedir}" /> |
| <property |
| name="vmargs" |
| value="" /> |
| <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}" /> |
| <property |
| name="junit-stylesheet" |
| value="${basedir}/JUNIT.XSL" /> |
| <property |
| name="testframeworkinitialized" |
| value="true" /> |
| <echoproperties description="Echo Properties at end of init in library.xml" /> |
| </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" |
| depends="init"> |
| <echo |
| level="debug" |
| message="DEBUG: Running tests using java-test" /> |
| <!--default vm args Note: the goal is to use same values as what would be in eclipse.ini --> |
| <condition |
| property="frameworkvmargs" |
| value=" -Xms256m -Xmx1024m -XX:MaxPermSize=256m ${envantopts}"> |
| <os family="windows" /> |
| </condition> |
| <!-- |
| For more info on -XstartOnFirstThread, see |
| http://stackoverflow.com/questions/3976342/running-swt-based-cross-platform-jar-properly-on-a-mac |
| --> |
| <condition |
| property="frameworkvmargs" |
| value=" -XstartOnFirstThread -Xms256m -Xmx1024m -XX:MaxPermSize=256m ${envantopts}"> |
| <os family="mac" /> |
| </condition> |
| <property |
| name="frameworkvmargs" |
| value=" -Xms256m -Xmx1024m -XX:MaxPermSize=256m ${envantopts}" /> |
| |
| <condition |
| property="loglocation" |
| value=" ${loglocationarg}=${junit-report-output}/${classname}-crash.log" |
| else=""> |
| <isset property="loglocationarg" /> |
| </condition> |
| |
| <!--set default jvm to use for testing--> |
| <property |
| name="jvm" |
| value="${java.home}/bin/java" /> |
| |
| <!-- if not set by caller, set frameworkperfargs to blank --> |
| <property name="frameworkperfargs" value=""/> |
| |
| <echo message="Running ${classname}. Result file: ${junit-report-output}/${classname}.xml" /> |
| <echo message="timout property: ${timeout}" /> |
| |
| <echo message="frameworkvmargs: ${frameworkvmargs}" /> |
| <echo message="vmargs: ${vmargs}" /> |
| <echo message="extraVMargs: ${extraVMargs}" /> |
| <echo message="frameworkperfargs: ${frameworkperfargs}" /> |
| <echo message="crash loglocationarg (if any): ${loglocationarg}" /> |
| <echo message="crash loglocation (if not default): ${loglocation}" /> |
| |
| <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" /> |
| <arg line="-timeout ${timeout}" /> |
| <arg value="-junitReportOutput" /> |
| <arg path="${junit-report-output}" /> |
| <jvmarg line="${frameworkvmargs} ${loglocation} ${vmargs} ${extraVMargs} ${frameworkperfargs}" /> |
| <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." |
| depends="init"> |
| <echo |
| level="debug" |
| message="DEBUG: Running tests using eclipse-test" /> |
| |
| <!--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}. Result file: ${junit-report-output}/${classname}.xml." /> |
| |
| <exec |
| executable="${eclipse-home}/eclipse" |
| dir="${eclipse-home}" |
| timeout="${timeout}" |
| logError="true" |
| failonerror="false" |
| output="${junit-report-output}/${classname}.txt"> |
| <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="--launcher.suppressErrors" /> |
| <arg line="${consolelog}" /> |
| <arg line="-vmargs ${frameworkvmargs} ${loglocation} ${vmargs} ${extraVMargs} -DPLUGIN_PATH=${plugin-path}" /> |
| </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> |
| |
| |
| <!--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> |
| |
| <!-- save any crash logs generated (before they are deleted by subsequent test runs --> |
| <!-- |
| TODO: not all VM's call their crash logs "hs_err_pid*.log". |
| We can expand the list as we learn of others |
| --> |
| <copy todir="${junit-report-output}/crashlogs/"> |
| <fileset dir="${eclipse-home}"> |
| <include name="**/hs_err_pid*.log" /> |
| </fileset> |
| <globmapper |
| from="*" |
| to="${classname}.*" /> |
| </copy> |
| </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> |
| |
| </project> |
| |