| <!--/******************************************************************************* |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Ant naming conventions: |
| * - regardless of the actual OS platform,'/' is the directory separator |
| * (Ant will convert as appropriate). |
| * - multi-word properties use periods '.' |
| * - properties ending in .jar define jarfile names only (no path) |
| * - properties ending in .lib are fully qualified jars (path and filename) |
| * - properties ending in .dir are directory paths |
| * - properties ending in .path are path refid names (classpath fragments) |
| * - multi-word targets use hyphens '-' |
| * - targets beginning with test- are reserved for high level test targets, |
| * and are used in test results parsing |
| * - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip) |
| * - multi-word macros use underscores '_' |
| * - multi-word macro attributes are concatenated |
| * e.g. 'runpathref' |
| * - multi-word tasks (taskdef) names are concatenated |
| * e.g. 'validateconnection' |
| * - OS environment variables are in ALLCAPS and have 'env' as a prefix |
| * e.g. ${env.XXX}. |
| * - Ant properties are lower case. |
| * |
| * Contributors: |
| * pfilion - initial API and implementation |
| #******************************************************************************/--> |
| |
| <!-- This ant project includes the following tasks: |
| - build (default) : compiles Hermes tests, packages test jars |
| - compile : compiles Hermes tests |
| - package : jars Hermes test jars |
| - test : runs AllHermesTests |
| |
| It requires some configuration of the build.properties and test.properties to run. |
| --> |
| <project name="eclipselink.hermes.test" default="build" basedir="."> |
| <available file="../${ant.project.name}" type="dir" property="hermes.test.is.local"/> |
| |
| <dirname property="hermes.test.build.location_temp" file="${ant.file.eclipselink.hermes.test}"/> |
| <pathconvert targetos="unix" property="hermes.test.build.location"> |
| <path> |
| <pathelement location="${hermes.test.build.location_temp}"/> |
| </path> |
| </pathconvert> |
| <property name="env" environment="env" value="env"/> |
| |
| <!-- Allows a user to overide certain user specific properties. --> |
| <!-- local property overrides --> |
| <condition property="custom.bld.properties.message" value="Loading user-defined overrides from '${user.home}/build.properties'..." |
| else="No user-defined overrides found to load ('${user.home}/build.properties' non-existant)."> |
| <available file="${user.home}/build.properties"/> |
| </condition> |
| <echo message="${custom.bld.properties.message}"/> |
| <property file="${user.home}/build.properties"/> |
| <condition property="custom.tst.properties.message" value="Loading user-defined test overrides from '${user.home}/test.properties'..." |
| else="No user-defined test overrides found to load ('${user.home}/test.properties' non-existant)."> |
| <available file="${user.home}/test.properties"/> |
| </condition> |
| <echo message="${custom.tst.properties.message}"/> |
| <property file="${user.home}/test.properties"/> |
| <!-- Allows overriding defaults where access to user.home isn't allowed --> |
| <condition property="custom.local.properties.message" value="Loading local overrides from '${basedir}/local.build.properties'..." |
| else="No Local overrides found to load. ('${basedir}/local.build.properties' non-existant)."> |
| <available file="${basedir}/local.build.properties"/> |
| </condition> |
| <echo message="${custom.local.properties.message}"/> |
| <property file="${basedir}/local.build.properties"/> |
| |
| <!-- property name="hermes.test.basedir" value="."/ --> |
| |
| <!-- Allows override of the build location or "basedir" for specific configurations (can specifically define hermes.test.basedir) --> |
| <property name="hermes.test.basedir" value="${hermes.test.build.location}"/> |
| <property file="${hermes.test.basedir}/antbuild.properties"/> |
| <!-- Allows specific suites/configurations to override defaults and add custom test (runtime) properties --> |
| <property file="${hermes.test.basedir}/${test.properties}"/> |
| <property file="${hermes.test.basedir}/test.properties"/> |
| |
| <!-- This checks if the trunk was checked out, or just the Eclipse projects. --> |
| <!-- To run from another location be sure to override hermes.test.basedir appropriately --> |
| <condition property="hermes.test.2.base.dir" value="${hermes.test.basedir}/../.." else="${hermes.test.basedir}/../.."> |
| <contains string="${hermes.test.build.location}" substring="jpa/${ant.project.name}"/> |
| </condition> |
| <property name="hermes.test.2.common.plugins.dir" value="${hermes.test.2.base.dir}/plugins"/> |
| <property name="hermes.test.2.jpa.plugins.dir" value="${hermes.test.2.base.dir}/jpa/plugins"/> |
| |
| <property name="version.qualifier" value="qualifier"/> |
| <property name="version.string" value="${release.version}.${version.qualifier}"/> |
| |
| <echo message="ant.project.name = '${ant.project.name}'"/> |
| <echo message="hermes.test.build.location = '${hermes.test.build.location}'"/> |
| <echo message="hermes.test.2.base.dir = '${hermes.test.2.base.dir}'"/> |
| <echo message="hermes.test.2.common.plugins.dir = '${hermes.test.2.common.plugins.dir}'"/> |
| <echo message="hermes.test.2.jpa.plugins.dir = '${hermes.test.2.jpa.plugins.dir}'"/> |
| |
| <target name="config-classpath"> |
| <config-compile-path/> |
| <config-run-path/> |
| </target> |
| |
| <macrodef name="config-compile-path"> |
| <sequential> |
| <echo message="Configuring compile.path to:"/> |
| <echo message=" '${hermes.test.2.jpa.plugins.dir}/${persistence20.jar}'"/> |
| <echo message=" '${hermes.test.2.common.plugins.dir}/org.eclipse.persistence.jpa.jpql_*.jar'"/> |
| <echo message=" "/> |
| <path id="compile.path"> |
| <pathelement path="${hermes.test.2.jpa.plugins.dir}/${persistence20.jar}"/> |
| <pathelement path="${junit.lib}"/> |
| <fileset dir="${hermes.test.2.common.plugins.dir}" includes="org.eclipse.persistence.jpa.jpql_*.jar"/> |
| </path> |
| </sequential> |
| </macrodef> |
| |
| <!-- Default ant target, compiles and packages test jars, does not run tests. --> |
| <target name="build" depends="clean, init, compile, package" description="build EclipseLink Hermes testing jars"/> |
| |
| <target name="clean" description="Clean the build" depends=""> |
| <delete includeEmptyDirs="true" failonerror="false"> |
| <fileset dir="${hermes.test.basedir}/${classes.dir}"/> |
| </delete> |
| </target> |
| |
| <!-- Creates required directories for building. --> |
| <target name="init"> |
| <mkdir dir="${hermes.test.basedir}/${classes.dir}"/> |
| </target> |
| |
| <!-- Compiles all tests. --> |
| <target name="compile" description="compile Hermes testing" depends="init, config-classpath, compile-test"/> |
| |
| <target name="compile-test"> |
| <javac srcdir="${hermes.test.basedir}/${src.dir}:${hermes.test.basedir}/${resource.source.dir}" |
| destdir="${hermes.test.basedir}/${classes.dir}" |
| debug="${javac.debug}" |
| debuglevel="${javac.debuglevel}" |
| encoding="UTF-8" |
| optimize="${javac.optimize}" |
| source="${javac.version}" |
| target="${javac.version}" |
| deprecation="${javac.deprecation}" |
| failonerror="true"> |
| <classpath> |
| <path refid="compile.path"/> |
| </classpath> |
| </javac> |
| </target> |
| |
| <!-- Packages Hermes unit test jars. --> |
| <target name="package" depends="config-classpath" description="build Hermes jar"> |
| <jar jarfile="${hermes.test.basedir}/${hermes.test.jar}"> |
| <fileset dir="${hermes.test.basedir}/${classes.dir}" includes="**/*.class"/> |
| <fileset dir="${hermes.test.basedir}/${resource.dir}" includes="resource/**/*"/> |
| </jar> |
| </target> |
| |
| |
| <!-- Testing --> |
| |
| <!-- Classpath used for running tests. --> |
| <macrodef name="config-run-path"> |
| <sequential> |
| <path id="run.classpath"> |
| <pathelement path="${hermes.test.basedir}/${classes.dir}"/> |
| <path refid="compile.path"/> |
| <pathelement path="${hermes.test.basedir}/${hermes.test.jar}"/> |
| </path> |
| </sequential> |
| </macrodef> |
| |
| <!-- Clean all build generated content. --> |
| <target name="clean-test" description="Clean the test"> |
| <delete dir="${hermes.test.basedir}/${report.dir}"/> |
| <delete dir="${hermes.test.basedir}/${run.dir}"/> |
| <mkdir dir="${hermes.test.basedir}/${report.dir}"/> |
| <mkdir dir="${hermes.test.basedir}/${run.dir}"/> |
| </target> |
| |
| <!-- Default test target, run the AllHermesTests --> |
| <target name="test" depends="clean-test, config-classpath"> |
| <antcall target="run-test" inheritRefs="true"> |
| <param name="TEST_CLASS" value="${test.class}"/> |
| <param name="RUN_PATH" value="run.classpath"/> |
| </antcall> |
| <antcall target="generate-report" inheritRefs="true"/> |
| </target> |
| |
| <!-- Generic target for running tests --> |
| <target name="run-test" depends="config-classpath"> |
| |
| <!-- Can be set e.g. in test.properties to add VM options for a particular platform/driver --> |
| <property name="additional.jvmargs" value="-Ddummy2=dummy"/> |
| |
| <junit printsummary="yes" haltonfailure="yes" fork="yes" forkmode="once" showoutput="true" maxmemory="${max.heap.memory}" dir="${run.dir}"> |
| <jvmarg value="-Declipselink.logging.level=${logging.level}"/> |
| <jvmarg line="${additional.jvmargs}"/> |
| <classpath> |
| <path refid="${RUN_PATH}"/> |
| </classpath> |
| <formatter type="xml"/> |
| <test name="${TEST_CLASS}" haltonfailure="no" outfile="${report.dir}/${TEST_CLASS}-test-results"> |
| </test> |
| </junit> |
| </target> |
| |
| <!-- Generate the Hermes tests report --> |
| <target name="generate-report"> |
| <junitreport todir="${hermes.test.basedir}/${report.dir}"> |
| <fileset dir="${hermes.test.basedir}/${report.dir}"> |
| <include name="*test-results.xml"/> |
| </fileset> |
| <report format="noframes" todir="${hermes.test.basedir}/${report.dir}"/> |
| </junitreport> |
| </target> |
| |
| </project> |