<?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="test runner" default="test" basedir=".">
    <target name="init">
        <property name="extra.test.libs.dir" location="../../../extralibs"/>
        <property name="test.dist.dir" location="../../.."/>
        <property name="test.timeout" value="600000"/>
        <pathconvert property="nbjunit.workdir">
            <path location="${basedir}"/>
            <mapper>
                <chainedmapper>
                    <flattenmapper/>
                    <globmapper from="*" to="../../work/*"/>
                </chainedmapper>
            </mapper>
        </pathconvert>
        <property name="test.results.dir" location="../../results"/>
        <property name="test.classes.dir" location="../../classes"/>
        <property name="java.home.parent" location="${java.home}/.."/>
        <loadproperties srcFile="test.properties"/>
        <propertyset id="test.properties">
            <propertyref prefix="test-sys-prop."/>
            <mapper type="glob" from="test-sys-prop.*" to="*"/>
        </propertyset>
        <delete dir="${test.classes.dir}"/>
        <mkdir dir="${test.results.dir}"/>
        <unjar src="tests.jar" dest="${test.classes.dir}"/>
        <available file="data.zip" type="file" property="exists.test.data"/>
        <available file="${netbeans.dest.dir}/moduleCluster.properties" type="file" property="exists.platform.properties"/>
        <path id="test.cp">
            <pathelement location="${test.classes.dir}"/>
            <path path="${extra.test.libs}"/>
            <path path="${test.run.cp}"/>
        </path>
        <taskdef name="validatepath" classpath="../../../tasks.jar" classname="org.netbeans.nbbuild.testdist.ValidatePath"/>
        <condition property="testng.found" value ="true">
            <available classname="org.testng.annotations.Test" classpath="${extra.test.libs}"/>
        </condition>
        <validatepath pathref="test.cp" failedproperty="wrong.classpath"/>
        <pathconvert property="retouche.javac.api">
            <fileset dir="${netbeans.dest.dir}">
                <include name="java/modules/ext/*javac*api*.jar"/>
            </fileset>
        </pathconvert>
        <pathconvert property="retouche.javac.impl">
            <fileset dir="${netbeans.dest.dir}">
                <include name="java/modules/ext/*javac*impl*.jar"/>
            </fileset>
            <fileset dir="${nbjdk.home}/../Classes" erroronmissingdir="false">
                <include name="*.jar"/>
            </fileset>
        </pathconvert>
        <!-- When requires.nb.javac property is true, prepend javac-api on bootclasspath to allow override the default annotation
             processing API located in rt.jar. On Mac, prepend also javac-impl, so that tests are built against correct version of javac. -->
        <condition property="bootclasspath.prepend" value="${retouche.javac.api}:${retouche.javac.impl}">
            <and>
                <os family="mac"/>
                <istrue value="${requires.nb.javac}"/>
            </and>
        </condition>
        <condition property="bootclasspath.prepend" value="${retouche.javac.api}">
            <istrue value="${requires.nb.javac}"/>
        </condition>
        <condition property="test.bootclasspath.prepend.args" value="-Xbootclasspath/p:&quot;${bootclasspath.prepend}&quot;">
            <isset property="bootclasspath.prepend"/>
        </condition>
        <property name="test.bootclasspath.prepend.args" value=""/>
    </target>

    <target name="init-data" if="exists.test.data">
        <property name="test.data.folder" location="../../data"/>
        <unzip src="data.zip" dest="${test.data.folder}"/>
    </target>

    <target name="init-junit" depends="init" unless="${testng.found}">
        <macrodef name="test">
            <sequential>
                <junit
                    showoutput="true" fork="true" failureproperty="tests.failed"
                    errorproperty="tests.failed" filtertrace="${test.filter.trace}"
                    tempdir="${test.results.dir}" timeout="${test.timeout}" jvm="${custom.jvm.executable}"
                >
                    <batchtest todir="${test.results.dir}">
                        <fileset dir="${test.classes.dir}" includes="${test.includes}" excludes="${test.excludes}"/>
                    </batchtest>
                    <classpath refid="test.cp"/>
                    <syspropertyset refid="test.properties"/>
                    <sysproperty key="nbjunit.workdir" path="${nbjunit.workdir}"/>
                    <sysproperty key="nbjunit.hard.timeout" value="${test.timeout}"/>
                    <jvmarg line="${test.bootclasspath.prepend.args}"/>
                    <jvmarg line="${test.run.args.full}"/>
                    <formatter type="brief" usefile="false"/>
                    <formatter type="xml"/>
                </junit>
            </sequential>
        </macrodef>
    </target>

    <target name="init-testng" depends="init" if="${testng.found}">
        <macrodef name="test">
            <sequential>
                <mkdir dir="${test.results.dir}/testng"/>
                <taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${extra.test.libs}"/>
                <testng  mode="mixed"
                         failureProperty="tests.failed"
                         outputdir="${test.results.dir}/testng"
                         workingDir="${test.results.dir}"
                >
                    <classfileset dir="${test.classes.dir}" includes="${test.includes}" excludes="${test.excludes}"/>
                    <propertyset refid="test.properties"/>
                    <classpath refid="test.cp"/>
                    <jvmarg line="${test.bootclasspath.prepend.args}"/>
                    <jvmarg line="${test.run.args}"/>
                    <sysproperty key="nbjunit.workdir" path="${nbjunit.workdir}"/>
                    <sysproperty key="nbjunit.hard.timeout" value="${test.timeout}"/>
                </testng>
                <copy todir="${test.results.dir}">
                    <fileset dir="${test.results.dir}/testng/junitreports"/>
                </copy>
            </sequential>
        </macrodef>
    </target>

    <target name="test" depends="init,init-data,run-test" if="tests.failed">
        <mkdir dir="${test.results.dir}/failed-test-var"/>
    </target>

    <target name="run-test" depends="init,init-platform-properties,init-data,init-junit,init-testng,do-test,fail-test" description="Run tests">

    </target>
    <target name="do-test" unless="wrong.classpath">
        <macrodef name="metaproperty">
            <attribute name="name"/>
            <attribute name="value"/>
            <sequential>
                <property name="@{name}" value="${@{value}}"/>
            </sequential>
        </macrodef>
        <property name="test.config" value="default"/>
        <property name="test.run.args" value="-ea -Xmx480m -Xss2m -Dnetbeans.keyring.no.master=true"/>
        <property name="custom.jvm.args" value=""/>
        <property name="custom.jvm.executable" value="java"/>
        <property name="test.run.args.full" value="${test.run.args} ${custom.jvm.args}"/>
        <property name="test.config.default.includes" value="**/*Test.class"/>
        <property name="test.config.${test.config}.includes" value="NOTHING"/>
        <metaproperty name="test.includes" value="test.config.${test.config}.includes"/>
        <property name="test.config.${test.config}.excludes" value=""/>
        <metaproperty name="test.excludes" value="test.config.${test.config}.excludes"/>
        <test/>
    </target>

    <target name="fail-test" unless="test.disable.fails">
        <fail if="tests.failed">Some tests failed;Look at results:
            ${test.results.dir} .
        </fail>
    </target>

    <target name="init-platform-properties" depends="init" if="exists.platform.properties">
        <property file="${netbeans.dest.dir}/moduleCluster.properties"/>
    </target>
</project>
