blob: 42d282a11717c27ed47db26466cb88525daa7d15 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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
http://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="testng-impl" default="default" basedir="..">
<target name="default">
<echo message="Default target is not set."/>
</target>
<target name="-init-env">
<condition property="run.jvmargs.prop" value="${run.jvmargs}" else="">
<isset property="run.jvmargs"/>
</condition>
<!-- IDE sets this when CoS off + CTRL+F6 -->
<property name="test.includes" value="**/*.java"/>
<condition property="test.name.arg" value="-testname ${test.class}" else="">
<isset property="test.class"/>
</condition>
</target>
<!-- Call testng ant task -->
<target name="-init-macrodef-testng">
<macrodef name="testng-ant">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<fileset id="mixed.tests" dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
<taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}"/>
<testng mode="mixed" classfilesetref="mixed.tests" workingDir="${basedir}" failureProperty="tests.failed" outputdir="${build.test.results.dir}">
<classpath>
<pathelement path="${run.test.classpath}"/>
<pathelement path="${j2ee.platform.classpath}"/>
<pathelement path="${build.test.classes.dir}"/>
</classpath>
<propertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</propertyset>
<jvmarg line="${run.jvmargs.prop}"/>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
</testng>
</sequential>
</macrodef>
<macrodef name="testng-ant-xml">
<attribute name="testSuite" default="${build.dir}/generated/testng/temp-testng-customsuite.xml"/>
<sequential>
<taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}"/>
<testng workingDir="${basedir}" failureProperty="tests.failed" outputdir="${build.test.results.dir}">
<classpath>
<pathelement path="${run.test.classpath}"/>
<pathelement path="${j2ee.platform.classpath}"/>
<pathelement path="${build.test.classes.dir}"/>
</classpath>
<xmlfileset file="@{testSuite}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</propertyset>
<jvmarg line="${run.jvmargs.prop}"/>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
</testng>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-testng-debug">
<macrodef name="testng-debug">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs.prop}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<!-- redefine project specific junit macros to run testng instead -->
<target name="-testng">
<!-- Java SE projects -->
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<testng-ant includes="@{includes}" excludes="@{excludes}" testincludes="@{testincludes}"/>
</sequential>
</macrodef>
<!-- Web Projects -->
<macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<testng-ant includes="@{includes}" excludes="@{excludes}" testincludes="@{testincludes}"/>
</sequential>
</macrodef>
<!-- EJB Projects -->
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2ee-ejbjarproject/2">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<testng-ant includes="@{includes}" excludes="@{excludes}" testincludes="@{testincludes}"/>
</sequential>
</macrodef>
<!-- Java EE application client projects -->
<macrodef name="junit" uri="http://www.netbeans.org/ns/car-project/1">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<testng-ant includes="@{includes}" excludes="@{excludes}" testincludes="@{testincludes}"/>
</sequential>
</macrodef>
</target>
<target name="-reinit-tasks" depends="-init-env, -init-macrodef-testng, -init-macrodef-testng-debug, -testng" />
<target name="-run-testng-default" unless="testng.config">
<testng-ant/>
</target>
<target name="-run-testng-custom" if="testng.config">
<testng-ant-xml testSuite="${testng.config}"/>
</target>
<target name="run-testng" depends="compile-test, -init-macrodef-testng, -run-testng-default, -run-testng-custom"/>
<!-- DEBUG -->
<target name="debug-testng" depends="-init-env, init, compile-test-single, -debug-start-debugger-test, -debug-start-debuggee-testng"/>
<target depends="init,compile-test,-debug-start-debuggee-testng" if="have.tests" name="-debug-start-debuggee-test"/>
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-testng">
<condition property="valid.test.in">
<or>
<isset property="test.class"/>
<isset property="test.class.or.method"/>
</or>
</condition>
<fail unless="valid.test.in">Must select one file in the IDE or set test.class or testng.config</fail>
<delete dir="${build.test.results.dir}" quiet="true"/>
<mkdir dir="${build.test.results.dir}"/>
<property name="test.class.or.method" value="-testclass ${test.class}"/>
<testng-debug classname="org.testng.TestNG" classpath="${debug.test.classpath}:${j2ee.platform.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<jvmarg value="-ea"/>
<arg line="-mixed"/>
<arg line="-d ${build.test.results.dir}"/>
<arg line="-listener org.testng.reporters.VerboseReporter"/>
<arg line="${test.name.arg}"/>
<arg line="${test.class.or.method}"/>
</customize>
</testng-debug>
</target>
</project>