blob: f86ddc81cdd52c4894845c002f9c65d9c006d5e6 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="junitlauncher-test" basedir=".">
<property name="output.dir" location="${java.io.tmpdir}"/>
<property name="build.classes.dir" value="${build.tests.value}"/>
<target name="init">
<mkdir dir="${output.dir}"/>
</target>
<path id="junit.platform.classpath">
<fileset dir="../../../../../lib/optional" includes="junit-platform*.jar"/>
</path>
<path id="junit.engine.vintage.classpath">
<fileset dir="../../../../../lib/optional" includes="junit-vintage-engine*.jar"/>
<fileset dir="../../../../../lib/optional" includes="junit-*.jar"/>
<fileset dir="../../../../../lib/optional" includes="hamcrest*.jar"/>
<fileset dir="../../../../../lib/optional" includes="opentest4j*.jar"/>
</path>
<path id="junit.engine.jupiter.classpath">
<fileset dir="../../../../../lib/optional">
<include name="junit-jupiter*.jar"/>
<include name="opentest4j*.jar"/>
</fileset>
</path>
<path id="test.classpath">
<pathelement location="${build.classes.dir}"/>
<path refid="junit.engine.vintage.classpath"/>
<path refid="junit.engine.jupiter.classpath"/>
</path>
<target name="test-failure-stops-build" depends="init">
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-failure-stops-build.tracker}"
if="test-failure-stops-build.tracker"/>
<!-- A specific test meant to fail -->
<test name="org.example.junitlauncher.vintage.AlwaysFailingJUnit4Test" haltOnFailure="true"/>
<!-- classpath to be used for the tests -->
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-failure-continues-build" depends="init">
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-failure-continues-build.tracker}"
if="test-failure-continues-build.tracker"/>
<!-- A specific test meant to fail -->
<test name="org.example.junitlauncher.vintage.AlwaysFailingJUnit4Test"/>
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-success" depends="init">
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-success.tracker}"
if="test-success.tracker"/>
<!-- A specific test meant to pass -->
<test name="org.example.junitlauncher.vintage.JUnit4SampleTest"/>
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-one-specific-method" depends="init">
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-one-specific-method.tracker}"
if="test-one-specific-method.tracker"/>
<test name="org.example.junitlauncher.vintage.JUnit4SampleTest" methods="testBar" haltonfailure="true"/>
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-multiple-specific-methods" depends="init">
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-multiple-specific-methods.tracker}"
if="test-multiple-specific-methods.tracker"/>
<test name="org.example.junitlauncher.vintage.JUnit4SampleTest" methods=" testFoo, testFooBar "
haltonfailure="true"/>
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-multiple-individual" depends="init">
<junitlauncher>
<test name="org.example.junitlauncher.vintage.AlwaysFailingJUnit4Test">
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-multiple-individual-1.tracker}"
if="test-multiple-individual-1.tracker"/>
</test>
<test name="org.example.junitlauncher.vintage.JUnit4SampleTest">
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-multiple-individual-2.tracker}"
if="test-multiple-individual-2.tracker"/>
</test>
<classpath refid="test.classpath"/>
</junitlauncher>
</target>
<target name="test-batch" depends="init">
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-batch.tracker}"/>
<junitlauncher>
<classpath refid="test.classpath"/>
<testclasses outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker"
if="test-batch.tracker"/>
<fileset dir="${build.classes.dir}">
<include name="org/example/**/junitlauncher/**/"/>
<exclude name="org/example/**/junitlauncher/**/ForkedTest.class"/>
</fileset>
<listener type="legacy-brief" sendSysOut="true"/>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true"/>
</testclasses>
</junitlauncher>
</target>
<target name="test-basic-fork" depends="init">
<junitlauncher>
<classpath refid="test.classpath"/>
<test name="org.example.junitlauncher.vintage.ForkedTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-basic-fork.tracker}"
if="test-basic-fork.tracker"/>
<fork dir="${basedir}">
<sysproperty key="junitlauncher.test.sysprop.one" value="forked"/>
</fork>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true"/>
</test>
</junitlauncher>
</target>
<target name="test-junit-platform-lib-excluded" depends="init">
<junitlauncher>
<classpath refid="junit.engine.jupiter.classpath"/>
<classpath>
<pathelement location="${build.classes.dir}"/>
</classpath>
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<!-- expect the test to not be launched due to CNFE on JUnit platform classes -->
<fork dir="${basedir}" includeJUnitPlatformLibraries="false"/>
</test>
</junitlauncher>
</target>
<target name="test-junit-ant-runtime-lib-excluded" depends="init">
<junitlauncher>
<classpath refid="junit.engine.jupiter.classpath"/>
<classpath>
<pathelement location="${build.classes.dir}"/>
</classpath>
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<!-- expect the test to not be launched due to CNFE on Ant runtime classes -->
<fork dir="${basedir}" includeAntRuntimeLibraries="false"/>
</test>
</junitlauncher>
</target>
<target name="test-junit-platform-lib-custom-location" depends="init">
<junitlauncher>
<classpath refid="junit.engine.jupiter.classpath"/>
<classpath>
<pathelement location="${build.classes.dir}"/>
</classpath>
<!-- we set includeJUnitPlatformLibraries=false on the fork element
and then explicitly specify a location of the JUnit platform libraries -->
<classpath refid="junit.platform.classpath"/>
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-junit-platform-lib-custom-location.tracker}"
if="test-junit-platform-lib-custom-location.tracker"/>
<fork dir="${basedir}" includeJUnitPlatformLibraries="false"/>
</test>
</junitlauncher>
</target>
<target name="test-ant-runtime-lib-custom-location" depends="init">
<!-- duplicate the Ant classes into a jar -->
<jar destfile="${output.dir}/ant-runtime-duplicated.jar" basedir="${ant.runtime.classes.original.path}"/>
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-ant-runtime-lib-custom-location.tracker}"/>
<junitlauncher>
<classpath>
<path refid="junit.engine.jupiter.classpath"/>
<path refid="junit.engine.vintage.classpath"/>
<pathelement location="${build.classes.dir}"/>
<!-- our duplicated Ant runtime classes jar, since we
exclude the original Ant runtime classes on the fork element
by setting includeAntRuntimeLibraries=false -->
<pathelement location="${output.dir}/ant-runtime-duplicated.jar"/>
</classpath>
<testclasses outputdir="${output.dir}">
<fileset dir="${build.classes.dir}">
<include name="org/example/**/junitlauncher/**/"/>
</fileset>
<listener classname="org.example.junitlauncher.Tracker"
if="test-ant-runtime-lib-custom-location.tracker"/>
<fork dir="${basedir}" includeAntRuntimeLibraries="false">
<sysproperty key="junitlauncher.test.sysprop.one" value="forked"/>
</fork>
</testclasses>
</junitlauncher>
</target>
<target name="test-ant-and-junit-platform-lib-custom-location" depends="init">
<!-- duplicate the Ant classes into a jar -->
<jar destfile="${output.dir}/ant-runtime-duplicated.jar" basedir="${ant.runtime.classes.original.path}"/>
<junitlauncher>
<classpath>
<path refid="junit.engine.vintage.classpath"/>
<pathelement location="${build.classes.dir}"/>
<!-- our duplicated Ant runtime classes jar, since we
exclude the original Ant runtime classes on the fork element
by setting includeAntRuntimeLibraries=false -->
<pathelement location="${output.dir}/ant-runtime-duplicated.jar"/>
<!-- we set includeJUnitPlatformLibraries=false on the fork element
and then explicitly specify a location of the JUnit platform libraries -->
<path refid="junit.platform.classpath"/>
</classpath>
<testclasses outputdir="${output.dir}">
<fileset dir="${build.classes.dir}">
<include name="org/example/**/junitlauncher/**/JUnit4SampleTest.class"/>
</fileset>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${test-ant-and-junit-platform-lib-custom-location.tracker}"
if="test-ant-and-junit-platform-lib-custom-location.tracker"/>
<fork dir="${basedir}" includeAntRuntimeLibraries="false" includeJUnitPlatformLibraries="false"/>
</testclasses>
</junitlauncher>
</target>
<target name="test-method-with-include-tag" depends="init">
<!-- junitlauncher includeTags="fast, superfast" excludeTags="slow"-->
<junitlauncher includeTags=" fast , superfast" excludeTags=" slow">
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
resultFile="${test-method-with-include-tag.tracker}" if="test-method-with-include-tag.tracker" />
</test>
</junitlauncher>
</target>
<target name="test-method-with-exclude-tag" depends="init">
<junitlauncher excludeTags="slow">
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
resultFile="${test-method-with-exclude-tag.tracker}" if="test-method-with-exclude-tag.tracker" />
</test>
</junitlauncher>
</target>
<target name="test-method-with-tag-2-classes" depends="init">
<junitlauncher includeTags="fast">
<test name="org.example.junitlauncher.jupiter.JupiterSampleTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
resultFile="${test-method-with-tag-2-classes1.tracker}" if="test-method-with-tag-2-classes1.tracker" />
</test>
<test name="org.example.junitlauncher.jupiter.JupiterTagSampleTest" outputdir="${output.dir}">
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
resultFile="${test-method-with-tag-2-classes2.tracker}" if="test-method-with-tag-2-classes2.tracker" />
</test>
</junitlauncher>
</target>
<target name="test-beforeall-failure-stops-build" depends="init">
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-beforeall-failure-stops-build.tracker}"/>
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
if="test-beforeall-failure-stops-build.tracker"/>
<test name="org.example.junitlauncher.jupiter.JupiterSampleTestFailingBeforeAll" haltOnFailure="true"/>
</junitlauncher>
</target>
<target name="test-beforeall-failure-continues-build" depends="init">
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-beforeall-failure-continues-build.tracker}"/>
<junitlauncher>
<listener classname="org.example.junitlauncher.Tracker"
if="test-beforeall-failure-continues-build.tracker"/>
<test name="org.example.junitlauncher.jupiter.JupiterSampleTestFailingBeforeAll"/>
</junitlauncher>
</target>
<target name="test-method-with-tag-fileset" depends="init">
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-method-with-tag-fileset.tracker}"/>
<junitlauncher includeTags="fast">
<testclasses outputdir="${output.dir}">
<fileset dir="${build.classes.dir}">
<include name="org/example/junitlauncher/jupiter/*" />
</fileset>
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
if="test-method-with-tag-fileset.tracker" />
</testclasses>
</junitlauncher>
</target>
<target name="test-method-with-tag-fileset-fork" depends="init">
<property name="junitlauncher.test.tracker.append.file" value="${output.dir}/${test-method-with-tag-fileset-fork.tracker}" />
<junitlauncher includeTags="fast">
<classpath refid="junit.engine.jupiter.classpath" />
<classpath>
<pathelement location="${build.classes.dir}" />
</classpath>
<classpath refid="junit.platform.classpath" />
<testclasses outputdir="${output.dir}">
<fileset dir="${build.classes.dir}">
<include name="org/example/junitlauncher/jupiter/*" />
</fileset>
<fork dir="${basedir}" includeJUnitPlatformLibraries="false">
</fork>
<listener classname="org.example.junitlauncher.Tracker" outputDir="${output.dir}"
if="test-method-with-tag-fileset-fork.tracker" />
</testclasses>
</junitlauncher>
</target>
<target name="bz-63958">
<junitlauncher>
<classpath refid="test.classpath"/>
<testclasses>
<listener classname="org.example.junitlauncher.Tracker"
outputDir="${output.dir}"
resultFile="${bz-63958.tracker}"
if="bz-63958.tracker"/>
<fileset dir="${build.classes.dir}">
<include name="**/ForkedTest.class"/>
</fileset>
<fork>
<sysproperty key="junitlauncher.test.sysprop.one" value="forked"/>
</fork>
</testclasses>
<listener type="legacy-plain" sendSysOut="true" />
</junitlauncher>
</target>
</project>