<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2005 The Apache Software Foundation

    Licensed 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 default="default"
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    xmlns:u="jelly:util"
    >

    <!-- ==================== -->
    <!-- Default Global Goals -->
    <!-- ==================== -->

    <goal name="default">
        <attainGoal name="jar:install-snapshot"/>
    </goal>

    <goal name="help">
        <echo>Custom goals for this project are:</echo>
        <echo>  installSchema - installs the database schema</echo>
        <echo>  enhance.iut - enhances persistence capable classes with the implementation under test enhancer if enhancement is not up to date</echo>
        <echo>  enhance.jdori - enhances persistence capable classes with the JDO Reference Implementation enhancer if enhancement is not up to date</echo>
        <echo>  runtck.iut - runs the TCK on the implementation under test</echo>
        <echo>  runtck.jdori - runs the TCK on the JDO Reference Implementation</echo>
        <echo></echo>
        <echo>Options for this project are:</echo>
        <echo>  -Djdo.tck.cfglist=xxx - a list of configuration files (must be in test/conf)</echo>
        <echo>  -Djdo.tck.dblist=xxx - a list of databases</echo>
        <echo>  -Djdo.tck.identitytypes=xxx - a list of identity types (applicationidentity, datastoreidentity)</echo>
        <echo>  -Djdo.tck.cleanupaftertest=xxx - true/false. Setting it to false will retain data in database after test. This will allow inspection of data after test is run. Default is true</echo>
        <echo></echo>
        <echo>Examples:</echo>
        <echo>  maven -Djdo.tck.identitytypes=datastoreidentity installSchema</echo>
        <echo>      Installs the database schema for datastore identity for all supported databases</echo>
        <echo>  maven -Djdo.tck.cfglist="alltests.conf cfg1.conf" runtck.jdori</echo>
        <echo>      Runs the test configurations specified in alltests.conf and cfg1.conf on the JDORI, using all supported identity types and databases. </echo>
        <echo></echo>
        <echo>Note:</echo>
        <echo>  By default, the database schema is NOT installed when the custom goals runtck.iut and runtck.jdori are run.</echo>
        <echo>  maven build installs the database schema and runs the TCK on the JDO Reference Implementation.</echo>
        <echo>  Enhancement is always done before running the TCK when the enhanced classes are not up to date.</echo>
    </goal>

    <goal name="build">
        <attainGoal name="default"/>
        <attainGoal name="setProps"/>
        <attainGoal name="privateInstallSchema"/>
        <attainGoal name="privateRuntck.jdori"/>
        <attainGoal name="result"/>
    </goal>

    <goal name="rebuild">
        <attainGoal name="clean"/>
        <attainGoal name="build"/>
    </goal>

    <goal name="clobber" prereqs="clean">
        <delete>
            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
        </delete>
    </goal>

    <!-- ================== -->
    <!-- Set properties     -->
    <!-- ================== -->

    <goal name="setProps">
        <echo>setProps:</echo>

        <j:set var="zeroval" value="0"/>
        <j:set var="spaceval" value=" "/>
        <j:set var="nullval" value=""/>

        <j:set var="cfglist" value="${jdo.tck.cfglist}"/>
        <j:if test="${cfglist == null}">
            <u:properties file="${basedir}/test/conf/configurations.list"/>
        </j:if>

        <echo>Configurations for this run are "${jdo.tck.cfglist}". To override this, use -Djdo.tck.cfglist=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.cfglist" delim=" ">
            ${jdo.tck.cfglist}
        </u:tokenize>

        <echo>Databases for this run are "${jdo.tck.dblist}". To override this, use -Djdo.tck.dblist=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.dblist" delim=" ">
            ${jdo.tck.dblist}
        </u:tokenize>

        <echo>Identity types for this run are "${jdo.tck.identitytypes}". To override this, use -Djdo.tck.identitytypes=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.identitytypes" delim=" ">
            ${jdo.tck.identitytypes}
        </u:tokenize>

    </goal>

    <goal name="exclude">

        <j:new var="testclasses" className="java.util.Vector"/>
        <u:tokenize var="jdo.tck.classes" delim=" ">
            ${jdo.tck.classes}
        </u:tokenize>
        <j:forEach var="class" items="${jdo.tck.classes}">
            <j:set var="foo" value="${testclasses.add(class)}"/>
        </j:forEach>

        <u:properties file="${jdo.tck.excludelist}"/>
        <u:tokenize var="jdo.tck.exclude" delim=" ">
            ${jdo.tck.exclude}
        </u:tokenize>
        <j:forEach var="excludedclass" items="${jdo.tck.exclude}">
            <j:set var="foo" value="${testclasses.remove(excludedclass)}"/>
        </j:forEach>

        <j:new var="strbuf" className="java.lang.StringBuffer"/>
        <j:forEach var="class" items="${testclasses}">
            <j:set var="foo" value="${strbuf.append(class)}"/>
            <j:set var="foo" value="${strbuf.append(spaceval)}"/>
        </j:forEach>
        <j:set var="jdo.tck.classes" value="${strbuf}"/>

    </goal>

    <!-- ================== -->
    <!-- Install schema     -->
    <!-- ================== -->

    <goal name="installSchema" prereqs="setProps">
        <attainGoal name="privateInstallSchema"/>
    </goal>

    <goal name="privateInstallSchema">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <!-- load mappings into a HashSet to unique them -->
        <j:new var="uniqueMappings" className="java.util.HashSet"/>
        <j:forEach var="cfg" items="${jdo.tck.cfglist}">
            <u:properties file="${basedir}/test/conf/${cfg}"/>
            <j:set var="mapping" value="${jdo.tck.mapping}"/>
            <j:set var="foo">
                <j:expr value="${uniqueMappings.add(mapping)}"/>
            </j:set>
        </j:forEach>

        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="nextMapping"
                           items="${uniqueMappings.iterator()}">
                    <attainGoal name="doInstallSchema"/>
                </j:forEach>
            </j:forEach>
        </j:forEach>
    </goal>

    <goal name="doInstallSchema">
        <!-- Set schema name from mapping designator -->
        <j:choose>
            <j:when test="${nextMapping == zeroval}">
                <j:set var="jdo.tck.schema" value="schema.sql"/>
            </j:when>
            <j:otherwise>
                <j:set var="jdo.tck.schema" value="schema${nextMapping}.sql"/>
            </j:otherwise>
        </j:choose>

        <mkdir dir="${jdo.tck.testdir}/database/${jdo.tck.database}"/>
        <copy todir="${jdo.tck.testdir}/database/${jdo.tck.database}">
            <fileset dir="${basedir}/test/conf">
               <include name="${jdo.tck.database}.properties"/>
            </fileset>
        </copy>

        <echo>Install schema: ${jdo.tck.schema}
              for db ${jdo.tck.database} id ${jdo.tck.identitytype}</echo>
        <!-- todo: abstract the command line below for other databases -->
        <java classname="org.apache.derby.tools.ij" fork="true">
              <classpath>
                  <pathelement location="${derbytools.jarfile}"/>
                  <pathelement location="${derby.jarfile}"/>
              </classpath>
              <arg value="${basedir}/test/sql/${jdo.tck.database}/${jdo.tck.identitytype}/${jdo.tck.schema}"/>
              <sysproperty key="derby.system.home"
                      value="${jdo.tck.testdir}/database/${jdo.tck.database}"/>
        </java>
    </goal>

    <!-- ================== -->
    <!-- Run test cases     -->
    <!-- ================== -->

    <goal name="runtck.iut" prereqs="setProps">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <attainGoal name="privateRuntck.iut"/>
        <attainGoal name="result"/>
    </goal>

    <goal name="privateRuntck.iut"
          prereqs="java:compile, testrunner.set, copyprops, doEnhance.iut">
        <!-- Run tests for all databases, identity types, and configurations -->
        <tstamp>
            <format property="timestamp" pattern="yyyyMMdd-HHmmss"/>
        </tstamp>
        <mkdir dir="${jdo.tck.log.directory}/${timestamp}"/>
        <echo>Run all configurations on iut</echo>
        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="jdo.tck.cfg" items="${jdo.tck.cfglist}">
                    <!-- get jdo.tck.classes (list of testclasses),
                         jdo.tck.testdata, jdo.tck.mapping -->
                    <u:properties file="${basedir}/test/conf/${jdo.tck.cfg}"/>
                    <attainGoal name="exclude"/>
                    <j:new var="schemaname" className="java.lang.String"/>
                    <j:set var="id" value="${jdo.tck.identitytype}"/>
                    <j:set var="mapping" value="${jdo.tck.mapping}"/>
                    <j:if test="${mapping == zeroval}">
                       <j:set var="jdo.tck.mapping" value=""/>
                    </j:if>
                    <j:set var="schemaname">
                        <j:expr value="${schemaname.concat(id)}"/>
                        <j:expr value="${schemaname.concat(mapping)}"/>
                    </j:set>
                    <attainGoal name="doRuntck.iut"/>
                </j:forEach>
            </j:forEach>
        </j:forEach>
    </goal>

    <goal name="runtck.jdori" prereqs="setProps">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <attainGoal name="privateRuntck.jdori"/>
        <attainGoal name="result"/>
    </goal>

    <goal name="privateRuntck.jdori"
          prereqs="java:compile, testrunner.set, copyprops, doEnhance.jdori">
        <!-- Run tests for all databases, identity types, and configurations -->
        <tstamp>
            <format property="timestamp" pattern="yyyyMMdd-HHmmss"/>
        </tstamp>
        <mkdir dir="${jdo.tck.log.directory}/${timestamp}"/>
        <echo>Run all configurations on jdori</echo>
        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="jdo.tck.cfg" items="${jdo.tck.cfglist}">
                    <u:properties file="${basedir}/test/conf/${jdo.tck.cfg}"/>
                    <attainGoal name="exclude"/>
                    <j:new var="schemaname" className="java.lang.String"/>
                    <j:set var="id" value="${jdo.tck.identitytype}"/>
                    <j:set var="mapping" value="${jdo.tck.mapping}"/>
                    <j:if test="${mapping == zeroval}">
                       <j:set var="jdo.tck.mapping" value=""/>
                    </j:if>
                    <j:set var="schemaname">
                        <j:expr value="${schemaname.concat(id)}"/>
                        <j:expr value="${schemaname.concat(mapping)}"/>
                    </j:set>
                    <attainGoal name="doRuntck.jdori"/>
                </j:forEach>
            </j:forEach>
        </j:forEach>
    </goal>

    <goal name="doRuntck.iut">
        <echo>Run JDO TCK on the IUT with configuration ${jdo.tck.configuration}</echo>
        <path id="this.project.class.path">
            <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
            <path refid="project.class.path"/>
        </path>
        <j:set var="jdo.tck.testrunnerclass"
               value="org.apache.jdo.tck.util.BatchTestRunner"/>
         <u:loadText file="${basedir}/test/conf/${iut.runtck.properties}"
                    var="PMFProps"/>
        <j:file name="${jdo.tck.testclasses.dir}/${iut.runtck.properties}"
                omitXmlDeclaration="true">
            ${PMFProps}
            ### Properties below added by maven goal doRuntck.jdori
            javax.jdo.option.Mapping=${jdo.tck.database}${jdo.tck.mapping}
            javax.jdo.mapping.Schema=${schemaname}
        </j:file>
        <java fork="yes" dir="${jdo.tck.testdir}"
              classname="${jdo.tck.testrunnerclass}">
            <classpath refid="this.project.class.path"/>
            <sysproperty key="ResultPrinterClass"
                         value="${jdo.tck.resultprinterclass}"/>
            <sysproperty key="verbose" value="${verbose}"/>
            <sysproperty key="PMFProperties"
                         value="${jdo.tck.testclasses.dir}/${iut.runtck.properties}"/>
            <sysproperty key="PMF2Properties"
                         value="${jdo.tck.testclasses.dir}/${iut.runtck.properties}"/>
            <sysproperty key="jdo.tck.testdata" value="${jdo.tck.testdata}"/>
            <sysproperty key="jdo.tck.standarddata"
                         value="${jdo.tck.standarddata}"/>
            <sysproperty key="jdo.tck.description"
                         value="${jdo.tck.description}"/>
            <sysproperty key="jdo.tck.identitytype"
                         value="${jdo.tck.identitytype}"/>
            <sysproperty key="jdo.tck.database"
                         value="${jdo.tck.database}"/>
            <sysproperty key="jdo.tck.cfg"
                         value="${jdo.tck.cfg}"/>
            <sysproperty key="jdo.tck.exclude"
                         value="${jdo.tck.exclude}"/>
            <sysproperty key="jdo.tck.log.directory"
                         value="${jdo.tck.log.directory}/${timestamp}"/>
            <sysproperty key="jdo.tck.cleanupaftertest"
                         value="${jdo.tck.cleanupaftertest}"/>             
            <sysproperty key="jdo.tck.requiredOptions"
                         value="${jdo.tck.requiredOptions}"/>
            <jvmarg line="${database.runtck.sysproperties}"/>
            <jvmarg line="${iut.runtck.sysproperties}"/>
            <arg line="${jdo.tck.classes}"/>
        </java>
    </goal>

    <goal name="doRuntck.jdori">
        <path id="this.jdori.class.path">
            <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
            <path refid="jdori.class.path"/>
        </path>
        <u:loadText file="${basedir}/test/conf/${PMFProperties}"
                    var="PMFProps"/>
        <j:file name="${jdo.tck.testclasses.dir}/${PMFProperties}"
                omitXmlDeclaration="true">
            ${PMFProps}
            ### Properties below added by maven goal doRuntck.jdori
            javax.jdo.option.Mapping=${jdo.tck.database}${jdo.tck.mapping}
            javax.jdo.mapping.Schema=${schemaname}
        </j:file>
        <j:set var="jdo.tck.testrunnerclass"
               value="org.apache.jdo.tck.util.BatchTestRunner"/>
        <java fork="yes" dir="${jdo.tck.testdir}"
               classname="${jdo.tck.testrunnerclass}">
            <classpath refid="this.jdori.class.path"/>
            <sysproperty key="ResultPrinterClass"
                         value="${jdo.tck.resultprinterclass}"/>
            <sysproperty key="verbose" value="${verbose}"/>
            <sysproperty key="PMFProperties"
                         value="${jdo.tck.testclasses.dir}/${PMFProperties}"/>
            <sysproperty key="PMF2Properties"
                         value="${jdo.tck.testclasses.dir}/${PMFProperties}"/>
            <sysproperty key="jdo.tck.testdata" value="${jdo.tck.testdata}"/>
            <sysproperty key="jdo.tck.standarddata"
                         value="${jdo.tck.standarddata}"/>
            <sysproperty key="jdo.tck.description"
                         value="${jdo.tck.description}"/>
            <sysproperty key="jdo.tck.identitytype"
                         value="${jdo.tck.identitytype}"/>
            <sysproperty key="jdo.tck.database"
                         value="${jdo.tck.database}"/>
            <sysproperty key="jdo.tck.cfg"
                         value="${jdo.tck.cfg}"/>
            <sysproperty key="jdo.tck.exclude"
                         value="${jdo.tck.exclude}"/>
            <sysproperty key="jdo.tck.log.directory"
                         value="${jdo.tck.log.directory}/${timestamp}"/>
            <sysproperty key="jdo.tck.cleanupaftertest"
                         value="${jdo.tck.cleanupaftertest}"/>
            <sysproperty key="jdo.tck.requiredOptions"
                         value="${jdo.tck.requiredOptions}"/>
            <jvmarg line="${database.runtck.sysproperties}"/>
            <jvmarg line="${jdo.runtck.sysproperties}"/>
            <arg line="${jdo.tck.classes}"/>
        </java>
        <echo>Finished run with database="${jdo.tck.database}" identitytype="${jdo.tck.identitytype}" mapping="${jdo.tck.mapping}".</echo>
    </goal>

    <goal name="result">
        <java fork="yes" dir="${jdo.tck.testdir}"
               classname="org.apache.jdo.tck.util.ResultSummary">
            <classpath refid="jdori.class.path"/>
            <arg line="${jdo.tck.log.directory}/${timestamp}"/>
        </java>
    </goal>

    <!-- ================== -->
    <!-- Enhance PC classes -->
    <!-- ================== -->

    <goal name="enhance.jdori" prereqs="setProps">
        <attainGoal name="doEnhance.jdori"/>
    </goal>

    <goal name="enhance.iut" prereqs="setProps">
        <attainGoal name="doEnhance.iut"/>
    </goal>

    <goal name="enhance.check">
        <condition property="enhancement.required">
            <not>
                <uptodate targetfile="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar">
                    <srcfiles dir="${basedir}/test/jdo/${jdo.tck.identitytype}"
                          includes="**/*.jdo, **/*.jdoquery, **/*.jdoTest.properties"/>
                    <srcfiles dir="${basedir}/test/java"
                          includes="${jdo.tck.pcclasses.sources},
                                    ${jdo.tck.paclasses.sources}"/>
                </uptodate>
            </not>
        </condition>
    </goal>

    <goal name="enhance.prepare" prereqs="java:compile, copyprops">
        <!-- copy metadata -->
        <mkdir dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}" />
        <copy todir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}">
            <fileset dir="${basedir}/test/jdo/${jdo.tck.identitytype}"
                     includes="**/*.jdo, **/*.jdoquery, **/jdoTest.properties"/>
        </copy>
        <!-- compile pc and pa classes -->
        <javac srcdir="${basedir}/test/java"
           includes="${jdo.tck.pcclasses.sources} ${jdo.tck.paclasses.sources}"
           destdir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"
           debug="on"
           classpathref="project.class.path">
        </javac>
        <!-- classpath -->
        <path id="this.enhance.class.path">
            <path refid="enhance.class.path"/>
            <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"/>
        </path>

    </goal>

    <goal name="doEnhance.iut">
        <mkdir dir="${jdo.tck.log.directory.enhancer}"/>
        <j:set var="jdo.tck.enhanced.dir" value="${iut.enhanced.dir}"/>
        <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
            <attainGoal name="enhance.check"/>
            <j:if test="${enhancement.required}">
                <attainGoal name="enhance.prepare"/>
                <j:set var="iut.enhanced.dir"
                       value="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"/>
                <echo>Run IUT enhancer for ${jdo.tck.identitytype}</echo>
                <java fork="yes" failonerror="yes" 
                      dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"
                      classname="${iut.enhancer.main}"
                      classpathref="this.enhance.class.path">
                     <sysproperty key="jdo.tck.identitytype"
                                  value="${jdo.tck.identitytype}"/>
                     <sysproperty key="jdo.tck.log.directory"
                                  value="${jdo.tck.log.directory.enhancer}"/>
                     <jvmarg line="${iut.enhancer.sysproperties}"/>
                     <arg line="${iut.enhancer.options}"/>
                     <arg line="${iut.enhancer.args}"/>
                </java>
            </j:if>
            <attainGoal name="package.iut"/>
        </j:forEach>
    </goal>

    <goal name="doEnhance.jdori">
        <mkdir dir="${jdo.tck.log.directory.enhancer}"/>
        <j:set var="jdo.tck.enhanced.dir" value="${jdo.enhanced.dir}"/>
        <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
            <attainGoal name="enhance.check"/>
            <j:if test="${enhancement.required}">
                <echo>Run JDORI enhancer for ${jdo.tck.identitytype}</echo>
                <attainGoal name="enhance.prepare"/>
                <j:set var="jdo.enhanced.dir"
                       value="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"/>
                <java fork="yes" failonerror="yes" 
                      dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"
                      classname="${jdo.enhancer.main}"
                      classpathref="this.enhance.class.path">
                     <sysproperty key="jdo.tck.identitytype"
                                  value="${jdo.tck.identitytype}"/>
                     <sysproperty key="jdo.tck.log.directory"
                                  value="${jdo.tck.log.directory.enhancer}"/>
                     <jvmarg line="${jdo.enhancer.sysproperties}"/>
                     <arg line="${jdo.enhancer.options}"/>
                     <arg line="${jdo.enhancer.args}"/>
                </java>
            </j:if>
            <attainGoal name="package.jdori"/>
        </j:forEach>
    </goal>

    <!-- ========= -->
    <!-- Package   -->
    <!-- ========= -->

    <goal name="package.iut">
        <attainGoal name="package"/>
    </goal>

    <goal name="package.jdori">
        <attainGoal name="package"/>
    </goal>

    <goal name="package">
        <copy todir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}">
            <fileset dir="${basedir}/test/orm/${jdo.tck.identitytype}"
                     includes="**/*.orm"/>
            <fileset dir="${basedir}/test/testdata"
                     includes="**/*.xml"/>
        </copy>
        <delete file="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
        <jar jarfile="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar">
            <fileset dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}" 
                 includes="**/*.class, **/*.jdo, **/*.jdoquery **/*.orm, **/*.xml, **/jdoTest.properties"/>
        </jar>
    </goal>

    <!-- ========= -->
    <!-- Classpath -->
    <!-- ========= -->

    <ant:property file="${basedir}/test/conf/alltests.list"/>

    <path id="test_iut_jars" >
        <fileset dir="iut_jars" includes="*.jar"/>
    </path>

    <!-- Added jpox.enhancer.jarfile, renamed jpox.jdori.jarfile,
    added bcel.jarfile, log4j.jarfile(for jpox enhancer) -->
    <path id="project.class.path">
        <!-- Directory where enhanced class files are located  -->
        <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}/${jdo.tck.identitytype}.jar"/>
        <!-- Directory where JDOTCK class files are located  -->
        <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"/>
        <pathelement location="${jdo.tck.testclasses.dir}"/>
        <!-- JDO jar file  -->
        <pathelement location="${jdo.jdoapi.jarfile}"/>
        <!-- Jar files for the implementation to be tested -->
        <path refid="test_iut_jars" />
        <!-- JUnit jar file -->
        <pathelement location="${junit.jarfile}"/>
        <!-- Spring jar files -->
        <pathelement location="${springcore.jarfile}"/>
        <pathelement location="${springbeans.jarfile}"/>
        <pathelement location="${logging.jarfile}"/>
        <!-- Jar files for the reference implementation -->
        <pathelement location="${jpox.jdori.jarfile}" />
        <pathelement location="${jpox.enhancer.jarfile}" />
        <pathelement location="${jta.jarfile}" />
        <pathelement location="${xmlparser}" />
        <pathelement location="${bcel.jarfile}" />
        <pathelement location="${log4j.jarfile}" />
        <pathelement location="${derby.jarfile}" />
    </path>

    <!-- Paths needed for enhancement.  Must not include
        "${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"  -->
    <path id="enhance.class.path">
        <!-- Directory where JDOTCK class files are located  -->
        <pathelement location="${jdo.tck.testclasses.dir}"/>
        <!-- JDO jar file  -->
        <pathelement location="${jdo.jdoapi.jarfile}"/>
        <!-- Jar files for the implementation to be tested -->
        <path refid="test_iut_jars" />
        <!-- JUnit jar file -->
        <pathelement location="${junit.jarfile}"/>
        <!-- Jar files for the reference implementation -->
        <pathelement location="${jpox.jdori.jarfile}" />
        <pathelement location="${jpox.enhancer.jarfile}" />
        <pathelement location="${jta.jarfile}" />
        <pathelement location="${xmlparser}" />
        <pathelement location="${bcel.jarfile}" />
        <pathelement location="${log4j.jarfile}" />
    </path>

    <path id="jdori.class.path">
        <!-- Directory where JDOTCK class files are located  -->
        <pathelement location="${jdo.tck.testclasses.dir}"/>
        <!-- JDO jar file  -->
        <pathelement location="${jdo.jdoapi.jarfile}"/>
        <pathelement location="${jta.jarfile}" />
        <!-- JUnit jar file -->
        <pathelement location="${junit.jarfile}"/>
        <!-- Spring jar files -->
        <pathelement location="${springcore.jarfile}"/>
        <pathelement location="${springbeans.jarfile}"/>
        <pathelement location="${logging.jarfile}"/>
        <!-- Jar files for the reference implementation -->
        <pathelement location="${jpox.jdori.jarfile}" />
        <pathelement location="${xmlparser}" />
        <pathelement location="${bcel.jarfile}" />
        <pathelement location="${log4j.jarfile}" />
        <pathelement location="${derby.jarfile}" />
        <pathelement location="${core20.jarfile}" />
        <pathelement location="${enhancer20.jarfile}" />
        <!-- Jar files for connection pooling -->
        <pathelement location="${jpox.dbcp.jarfile}" />
        <pathelement location="${jpox.c3p0.jarfile}" />
        <pathelement location="${c3p0.jarfile}"/>
        <pathelement location="${dbcp.jarfile}"/>
        <pathelement location="${pool.jarfile}"/>
        <pathelement location="${collections.jarfile}"/>
        <!-- Jar files for jndi -->
        <pathelement path="${jndi}"/>
    </path>

    <!-- ==== -->
    <!-- Misc -->
    <!-- ==== -->

    <goal name="testrunner.set">
       <echo>testrunner.set:</echo>
       <condition property="jdo.tck.testrunnerclass" 
                  value="org.apache.jdo.tck.util.SwingTestRunner">
           <istrue value="${gui}"/>
       </condition>
       <condition property="jdo.tck.testrunnerclass" 
                  value="org.apache.jdo.tck.util.BatchTestRunner">
           <isfalse value="${gui}"/>
       </condition>
    </goal>

    <goal name="copyprops">
       <echo>copyprops:</echo>
        <copy todir="${jdo.tck.testclasses.dir}" >
            <fileset dir="${basedir}/test/conf">
               <include name="commons-logging.properties"/>
               <include name="simplelog.properties"/>
               <include name="logging.properties"/>
               <include name="log4j.properties"/>
               <include name="jndi.properties"/>
            </fileset>
            <fileset dir="${basedir}/test/java">
                <include name="**/*.xml"/>
            </fileset>
        </copy>
    </goal>

</project>
