| <!--*************************************************************************** |
| * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. * |
| * 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. * |
| * * |
| * Contributors: * |
| * Tomas Kraus - Initial API and implementation * |
| ****************************************************************************--> |
| <!-- This ant project includes the following tasks: |
| - build Compiles and packages all tests |
| - clean Cleans all classes, packages and reports |
| - compile Compiles all tests |
| - package Packages all tests |
| - test Runs all tests and generates report |
| - test-report Generates tests report |
| - test-run Runs all tests without report |
| --> |
| <project name="eclipselink.extension.test" default="build" basedir="."> |
| |
| <!--*********************************************************************** |
| * Common macros * |
| ************************************************************************--> |
| |
| <!-- Loads property file if exists. --> |
| <macrodef name="load-properties-file"> |
| <attribute name="file"/> |
| <sequential> |
| <local name="load.message"/> |
| <condition property="load.message" value=" + @{file} found" |
| else=" - @{file} not found"> |
| <available file="@{file}"/> |
| </condition> |
| <echo message="${load.message}"/> |
| <property file="@{file}"/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Loads properties file set as "test.properties" property. --> |
| <macrodef name="load-test-properties"> |
| <sequential> |
| <local name="load.message"/> |
| <local name="load.file.message"/> |
| <condition property="load.file.message" |
| value=" + ${test.properties} found" else=" - ${test.properties} not found"> |
| <available file="${test.properties}"/> |
| </condition> |
| <condition property="load.message" value="${load.file.message}" |
| else=" - test.properties value was not set"> |
| <isset property="test.properties"/> |
| </condition> |
| <echo message="${load.message}"/> |
| <property file="${test.properties}"/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Load all property files. --> |
| <macrodef name="load-properties"> |
| <sequential> |
| <echo message="Loading test properties"/> |
| <load-test-properties/> |
| <load-properties-file file="${user.home}/build.properties"/> |
| <load-properties-file file="${user.home}/test.properties"/> |
| <load-properties-file file="${user.home}/local.build.properties"/> |
| <echo message="Loading build properties"/> |
| <load-properties-file file="${basedir}/antbuild.properties"/> |
| <load-properties-file file="${basedir}/test.properties"/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Replace all occurences of "from" in "src" property with "to" and store result into "dst" property. --> |
| <macrodef name="property-replace"> |
| <attribute name="src"/> |
| <attribute name="dst"/> |
| <attribute name="from"/> |
| <attribute name="to"/> |
| <sequential> |
| <loadresource property="@{dst}"> |
| <propertyresource name="@{src}"/> |
| <filterchain> |
| <tokenfilter> |
| <filetokenizer/> |
| <replacestring from="@{from}" to="@{to}"/> |
| </tokenfilter> |
| </filterchain> |
| </loadresource> |
| </sequential> |
| </macrodef> |
| |
| <!-- Check Ant version. --> |
| <macrodef name="check-ant"> |
| <sequential> |
| <local name="compat.ant"/> |
| <local name="compat.ant.msg"/> |
| <condition property="compat.ant" value="true"> |
| <matches string="${ant.version}" pattern="1\.(?:[7-9]|[1-9]\d)(?:\.\d+)*.*"/> |
| </condition> |
| <condition property="compat.ant.msg" value=" + Ant: ${ant.version}" |
| else=" - Ant: ${ant.version}${line.separator} Build won't run properly unless running at least Ant 1.7.0"> |
| <isset property="compat.ant"/> |
| </condition> |
| <echo message="${compat.ant.msg}"/> |
| <fail unless="compat.ant" message="Ant version < 1.7.0."/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Check Java availability and version. --> |
| <macrodef name="check-java"> |
| <sequential> |
| <local name="compat.jdk"/> |
| <local name="compat.jdk.msg"/> |
| <condition property="compat.jdk" value="true"> |
| <matches string="${java.version}" pattern="1.(?:[8-9]|[1-9]\d)(?:.\d+)*.*|9.*"/> |
| </condition> |
| <condition property="compat.jdk.msg" value=" + JDK: ${java.version}" |
| else=" - JDK: ${java.version}${line.separator} Build won't run properly unless running at least JDK 1.8."> |
| <isset property="compat.jdk"/> |
| </condition> |
| <echo message="${compat.jdk.msg}"/> |
| <fail unless="compat.jdk" message="JDK version < 1.8."/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Check all building utilities. --> |
| <macrodef name="check-utils"> |
| <sequential> |
| <echo message="Checking build utilities:"/> |
| <check-ant/> |
| <check-java/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Run all jUnit tests. --> |
| <macrodef name="run-test"> |
| <attribute name="testdir"/> |
| <attribute name="tests"/> |
| <attribute name="dir"/> |
| <attribute name="reportdir"/> |
| <attribute name="loglevel"/> |
| <sequential> |
| <echo message="jUnit tests settings:"/> |
| <echo message=" - testdir: @{testdir}"/> |
| <echo message=" - tests: @{tests}"/> |
| <echo message=" - dir: @{dir}"/> |
| <echo message=" - reportdir: @{reportdir}"/> |
| <echo message=" - loglevel: @{loglevel}"/> |
| <!-- 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 jvm="${test.junit.jvm.exec}" printsummary="yes" failureproperty="junit.failed" fork="yes" forkmode="once" |
| showoutput="true" maxmemory="512m" dir="@{dir}"> |
| <jvmarg value="-Declipselink.logging.level=@{loglevel}"/> |
| <!--jvmarg value="-Djava.security.manager"/> |
| <jvmarg value="-Djava.security.policy=./java.policy.allpermissions"/--> |
| <jvmarg line="${additional.jvmargs}"/> |
| <classpath> |
| <path refid="core.extension.test.path"/> |
| </classpath> |
| <batchtest fork="yes" todir="@{reportdir}"> |
| <fileset dir="@{testdir}"> |
| <include name="@{tests}"/> |
| </fileset> |
| </batchtest> |
| <formatter type="xml"/> |
| </junit> |
| </sequential> |
| </macrodef> |
| |
| <!-- Generate jUnit tests report. --> |
| <macrodef name="generate-report"> |
| <attribute name="reportdir"/> |
| <sequential> |
| <junitreport todir="@{reportdir}"> |
| <fileset dir="@{reportdir}"> |
| <include name="*Test.xml"/> |
| </fileset> |
| <report format="noframes" todir="@{reportdir}"/> |
| </junitreport> |
| </sequential> |
| </macrodef> |
| |
| <!--*********************************************************************** |
| * Initialization * |
| ************************************************************************--> |
| |
| <!-- Load all property files. --> |
| <load-properties/> |
| <!-- Check build utilities. --> |
| <check-utils/> |
| |
| <!-- EclipseLink project home directory.--> |
| <property name="eclipselink.home.dir" location="${basedir}/../.."/> |
| <!-- Plugins directory.--> |
| <property name="eclipselink.plugins.dir" location="${eclipselink.home.dir}/plugins"/> |
| <!-- Core tests directory --> |
| <property name="core.test.dir" location="../eclipselink.core.test"/> |
| |
| <!-- JVM used to run tests --> |
| <property name="test.junit.jvm" value="${env.JAVA_HOME}"/> |
| <property name="test.junit.jvm.exec" value="${test.junit.jvm}/bin/java"/> |
| |
| <!-- Initialize common path. --> |
| <target name="common-path"> |
| <path id="core.extension.common.path"> |
| <fileset dir="${eclipselink.plugins.dir}" includes="org.eclipse.persistence.core_*.jar"/> |
| <fileset dir="${eclipselink.plugins.dir}" includes="org.eclipse.persistence.extension_*.jar"/> |
| <pathelement path="${core.test.dir}/${classes.dir}"/> |
| <pathelement path="${eclipselink.plugins.dir}/${org.slf4j.api.jar}"/> |
| <pathelement path="${eclipselink.plugins.dir}/${org.slf4j.api.jar}"/> |
| <pathelement path="${eclipselink.plugins.dir}/${ch.qos.logback.core.jar}"/> |
| <pathelement path="${eclipselink.plugins.dir}/${ch.qos.logback.classic.jar}"/> |
| <pathelement path="${eclipselink.plugins.dir}/${ch.qos.logback.slf4j.jar}"/> |
| <pathelement path="${junit.lib}"/> |
| </path> |
| </target> |
| |
| <!-- Initialize build path. --> |
| <target name="build-path" depends="common-path"> |
| <local name="path.msg"/> |
| <local name="path.msg.formated"/> |
| <path id="core.extension.build.path"> |
| <path refid="core.extension.common.path"/> |
| </path> |
| <pathconvert property="path.msg" refid="core.extension.build.path"/> |
| <property-replace src="path.msg" dst="path.msg.formated" |
| from="${path.separator}" to="${line.separator} "/> |
| <echo message="Build Path: ${path.msg.formated}"/> |
| </target> |
| |
| <!-- Initialize test path. --> |
| <target name="test-path" depends="common-path"> |
| <local name="path.msg"/> |
| <local name="path.msg.formated"/> |
| <path id="core.extension.test.path"> |
| <path refid="core.extension.common.path"/> |
| <pathelement path="${basedir}/${extension.test.jar}"/> |
| </path> |
| <pathconvert property="path.msg" refid="core.extension.test.path"/> |
| <property-replace src="path.msg" dst="path.msg.formated" |
| from="${path.separator}" to="${line.separator} "/> |
| <echo message="Test Path: ${path.msg.formated}"/> |
| </target> |
| |
| <!-- Initialize build directory tree. --> |
| <target name="build-dirs"> |
| <mkdir dir="${basedir}/${classes.dir}"/> |
| </target> |
| |
| <!-- Initialize test directory tree. --> |
| <target name="test-dirs"> |
| <mkdir dir="${basedir}/${run.dir}"/> |
| <mkdir dir="${basedir}/${report.dir}"/> |
| </target> |
| |
| <!--*********************************************************************** |
| * Main targets * |
| ************************************************************************--> |
| |
| <!-- Clean all tests. --> |
| <target name="clean" description="Cleans all classes, packages and reports"> |
| <delete includeEmptyDirs="true" failonerror="false"> |
| <fileset file="${basedir}/${extension.test.jar}"/> |
| <fileset dir="${basedir}/${classes.dir}"/> |
| <fileset dir="${basedir}/${run.dir}"/> |
| <fileset dir="${basedir}/${report.dir}"/> |
| </delete> |
| </target> |
| |
| <!-- Compile all tests. --> |
| <target name="build" depends="package" description="Compiles and packages all tests"> |
| </target> |
| |
| <!-- Compile all tests. --> |
| <target name="compile" depends="build-path,build-dirs" |
| description="Compiles all tests"> |
| <javac srcdir="${basedir}/${src.dir}" |
| destdir="${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" |
| includeAntRuntime="true"> |
| <compilerarg value="-Xlint:unchecked"/> |
| <classpath> |
| <path refid="core.extension.build.path"/> |
| </classpath> |
| <include name="org/eclipse/persistence/**"/> |
| </javac> |
| </target> |
| |
| <!-- Package all tests. --> |
| <target name="package" depends="compile" description="Packages all tests"> |
| <jar jarfile="${basedir}/${extension.test.jar}"> |
| <fileset dir="${basedir}/${classes.dir}" includes="org/eclipse/persistence/**/*.class"/> |
| </jar> |
| </target> |
| |
| <!-- Run all tests without report. --> |
| <target name="test-run" depends="test-path,test-dirs" description="Runs all tests without report"> |
| <run-test testdir="${basedir}/${classes.dir}" |
| tests="${test.class}" |
| dir="${run.dir}" |
| reportdir="${report.dir}" |
| loglevel="${logging.level}"/> |
| </target> |
| |
| <!-- Generate tests report. --> |
| <target name="test-report" description="Generates tests report"> |
| <generate-report reportdir="${report.dir}"/> |
| </target> |
| |
| <!-- Run all tests and generate report. --> |
| <target name="test" depends="test-run, test-report" description="Runs all tests and generates report"/> |
| |
| </project> |