| <?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="classlib-test" default="test-all" basedir=".."> |
| |
| <description> Tests for classlib package</description> |
| |
| <property name="hy.hdk" location="deploy" /> |
| |
| <!-- import common properties --> |
| <property name="tests.output" location="build/test_report" /> |
| <import file="${basedir}/make/properties.xml" /> |
| |
| <property name="gen.report" value="true" /> |
| <condition property="do.full.report" value="true"> |
| <and> |
| <equals arg1="${gen.report}" arg2="true" /> |
| <not><equals arg1="${short.report}" arg2="true" /></not> |
| </and> |
| </condition> |
| <condition property="do.short.report" value="true"> |
| <and> |
| <equals arg1="${gen.report}" arg2="true" /> |
| <equals arg1="${short.report}" arg2="true" /> |
| </and> |
| </condition> |
| |
| <property name="tests.support.output" location="build/test_support" /> |
| <property name="support.dir" location="support"/> |
| <property name="tests.depends.jars" location="deploy/jdk/jre/lib/boot" /> |
| <property file="make/depends.properties" /> |
| |
| <!-- this list of components to test will grow to eventually be all modules --> |
| <target name="test-all" |
| depends="clean-test-output, test-jar-init, test-modules, process-test-output" /> |
| |
| <target name="process-test-output" |
| depends="process-empty, gen-report, check-test-result" /> |
| |
| <target name="clean"> |
| <poll-modules target="clean-test" /> |
| <delete dir="${tests.output}" /> |
| <delete dir="${tests.support.output}" /> |
| <delete dir="${hy.hdk}/build/test" /> |
| </target> |
| |
| <target name="clean-test-output"> |
| <delete dir="${tests.output}" /> |
| </target> |
| |
| <target name="test-modules" depends="support-jar, test-jre-vm-info"> |
| <poll-modules target="-test-module" /> |
| </target> |
| |
| <target name="findbugs" depends="check-support-jars"> |
| <poll-modules target="findbugs" /> |
| </target> |
| |
| <target name="test-jar-init"> |
| <copy file="${basedir}/make/test.properties" tofile="${hy.hdk}/build/test/test.properties"/> |
| <copy file="${basedir}/make/run-test.xml" tofile="${hy.hdk}/build/test/build.xml"/> |
| </target> |
| |
| <target name="test-jar-modules" depends="test-jar-init"> |
| <poll-modules target="test-jar" /> |
| </target> |
| |
| <target name="gen-report" depends="full-report,short-report" /> |
| |
| <property name="report.dir" value="${tests.output}/html"/> |
| |
| <target name="full-report" if="do.full.report" > |
| <delete dir="${report.dir}" /> |
| <junitreport todir="${tests.output}"> |
| <fileset dir="${tests.output}"> |
| <include name="TEST*-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${report.dir}"/> |
| </junitreport> |
| |
| <!-- use this property just to get the slashes to display right in the echo --> |
| <property name="display-location" location="${report.dir}/index.html"/> |
| <echo message="The test report is in ${display-location}"/> |
| </target> |
| |
| <target name="short-report" if="do.short.report"> |
| <delete dir="${report.dir}" /> |
| <junitreport todir="${tests.output}"> |
| <fileset dir="${tests.output}" includes="TEST*-*.xml"> |
| <containsregexp expression='(errors|failures)=.[1-9]' /> |
| <exclude name="TESTS-TestSuites.xml" /> |
| </fileset> |
| <report format="frames" todir="${report.dir}"/> |
| </junitreport> |
| |
| <!-- use this property just to get the slashes to display right in the echo --> |
| <property name="display-location" location="${report.dir}/index.html"/> |
| <echo message="The short test report is in ${display-location}"/> |
| </target> |
| |
| <target name="support-jar" depends="compile-support"> |
| <mkdir dir="${hy.hdk}/build/test" /> |
| <jar destfile="${hy.hdk}/build/test/support.jar" |
| manifest="support/META-INF/MANIFEST.MF"> |
| <fileset dir="${tests.support.output}" /> |
| <metainf refid="hy.required.metainf-files"/> |
| </jar> |
| <copy todir="${hy.hdk}/build/test"> |
| <fileset dir="${jetty.dir}"> |
| <include name="*.jar" /> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="compile-support" depends="copy-test-resources, check-support-jars" |
| description="Compile the unit test source"> |
| <ensure-javac/> |
| <mkdir dir="${tests.support.output}" /> |
| <hy.javac |
| destdir="${tests.support.output}"> |
| |
| <src path="${support.dir}/src/test/java" /> |
| <classpath location="${junit.jar}" /> |
| <classpath location="${tests.support.output}" /> |
| <classpath> |
| <fileset dir="${jetty.dir}"> |
| <include name="*.jar" /> |
| </fileset> |
| </classpath> |
| <bootclasspath> |
| <fileset dir="${tests.depends.jars}"> |
| <include name="**/*.jar" /> |
| </fileset> |
| </bootclasspath> |
| </hy.javac> |
| |
| </target> |
| |
| <target name="check-test-result"> |
| <fail if="test.crashes" |
| message="There were test crashes: ${crashed.tests}"/> |
| <available property="test.errors" |
| file="${tests.output}/test.errors" /> |
| <available property="test.failures" |
| file="${tests.output}/test.failures" /> |
| <fail if="test.errors" message="There were test errors." /> |
| <fail if="test.failures" message="There were test failures." /> |
| </target> |
| |
| <!-- ================================= |
| target: copy-test-resources |
| ================================= --> |
| <target name="copy-test-resources" |
| description="Copy non-Java files from test support tree to the support output tree"> |
| |
| <mkdir dir="${tests.support.output}" /> |
| <copy todir="${tests.support.output}" includeemptydirs="false"> |
| <fileset dir="${support.dir}/src/test/java"> |
| <exclude name="**/*.java" /> |
| </fileset> |
| <fileset file="${support.dir}/src/test/resources/hyts_Foo.c"/> |
| </copy> |
| <copy file="${support.dir}/src/test/resources/config/testing.policy" |
| todir="${hy.hdk}/build/test" outputencoding="UTF-8" /> |
| </target> |
| |
| <target name="check-support-jars" |
| description="Check for jars required to compile and run unit tests"> |
| |
| <ant antfile="make/depends.xml" inheritall="false" target="check"/> |
| |
| </target> |
| |
| <target name="process-empty" depends="-check-for-empty, -process-empty"/> |
| <target name="-check-for-empty"> |
| <fileset id="empty.test.reports" dir="${tests.output}"> |
| <patternset> |
| <include name="TEST-*.xml"/> |
| </patternset> |
| <size value="0" when="equal"/> |
| </fileset> |
| |
| <pathconvert refid="empty.test.reports" pathsep="${path.separator}" |
| property="crashed.tests"/> |
| <condition property="test.crashes"> |
| <not> |
| <equals arg1="" arg2="${crashed.tests}" /> |
| </not> |
| </condition> |
| </target> |
| <target name="-process-empty" if="test.crashes"> |
| <property name="per.crashed.tests.file" |
| value="${tests.output}${file.separator}TEST-crashed.xml"/> |
| |
| <property name="per.header" |
| value="<?xml version='1.0' encoding='UTF-8' ?><testsuite errors='1' name='vmcrash.CrashedTests' time='0'>"/> |
| <property name="per.prefix" |
| value="<testcase classname='"/> |
| <property name="per.middle" value="' name='"/> |
| <property name="per.suffix" |
| value="' time='0.0'><error message='VM crash?'/></testcase>"/> |
| <property name="per.footer" value="</testsuite>"/> |
| |
| <echo message="${crashed.tests}" file="${per.crashed.tests.file}"/> |
| |
| <replaceregexp file="${per.crashed.tests.file}" flags="g"> |
| <regexp pattern="[^${path.separator}]*TEST-([^${path.separator}]*)\.xml${path.separator}?"/> |
| <substitution expression="${per.prefix}\1${per.middle}\1${per.suffix}"/> |
| </replaceregexp> |
| <replaceregexp file="${per.crashed.tests.file}" match="\A" |
| replace="${per.header}"/> |
| <echo file="${per.crashed.tests.file}" append="yes" |
| message="${per.footer}"/> |
| |
| <!-- now let's delete empty reports --> |
| <delete><fileset refid="empty.test.reports"/></delete> |
| |
| <!-- Need to ensure the file is UTF-8 on non-ASCII platforms --> |
| <move file="${per.crashed.tests.file}" |
| tofile="${per.crashed.tests.file}.orig" /> |
| <copy file="${per.crashed.tests.file}.orig" |
| tofile="${per.crashed.tests.file}" outputencoding="UTF-8" /> |
| <delete file="${per.crashed.tests.file}.orig" /> |
| |
| </target> |
| |
| </project> |