blob: e52f3bb63c59da95cd8fdf69b4d74a62aa9a5243 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2016 The Android Open Source Project
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 name="jack-coverage" default="all">
<dirname property="jack-project.dir" file="${ant.file.jack-coverage}" />
<property name="jack-coverage-libs.dir" value="${jack-project.dir}/libs" />
<property name="jack-coverage-tools.dir" value="${jack-project.dir}/tools" />
<property name="jack-coverage-rsc.dir" value="${jack-project.dir}/rsc" />
<property name="jack-coverage-build.dir" value="${jack-project.dir}/build" />
<property name="jack-coverage-build-classes.dir" value="${jack-coverage-build.dir}/classes" />
<property name="jack-coverage-build-test-classes.dir"
value="${jack-coverage-build.dir}/testClasses" />
<property name="jack-coverage-dist.dir" value="${jack-project.dir}/dist" />
<property name="jack-coverage.execname" value="jack-coverage-plugin.jar" />
<property name="jack-coverage-tests.execname" value="jack-coverage-tests.jar" />
<property name="jack-coverage-tests.output.dir" value="${jack-project.dir}/testResults" />
<property name="jack-coverage-tests.dump.dir" value="${jack-coverage-dist.dir}/dump" />
<property name="jack-coverage-tests.suite.name"
value="com.android.jack.coverage.AllCoverageTests" />
<target name="all"
description="Build plugin and tests"
depends="jack-coverage-plugin,jack-coverage-tests" />
<target name="clean" description="deletes files produced by all targets">
<delete dir="${jack-coverage-build.dir}" />
<delete dir="${jack-coverage-dist.dir}" />
<delete dir="${jack-coverage-libs.dir}" />
<delete dir="${jack-coverage-tools.dir}" />
<delete dir="${jack-coverage-tests.output.dir}" />
</target>
<target name="copy-jack-libs-and-tools"
description="update the project libraries (must be used at least once to install them)">
<mkdir dir="${jack-coverage-libs.dir}" />
<mkdir dir="${jack-coverage-tools.dir}" />
<!-- Copy required libraries -->
<copy file="../jack/dist/jack-lib.jar" todir="${jack-coverage-libs.dir}" />
<copy file="../jack-tests/dist/jack-tests.jar" todir="${jack-coverage-libs.dir}" />
<copy file="../gson/dist/gson.jar" todir="${jack-coverage-libs.dir}" />
<copy file="../sched/dist/sched-lib.jar" todir="${jack-coverage-libs.dir}" />
<copy file="../junit4/dist/junit4.jar" todir="${jack-coverage-libs.dir}" />
<copy file="../jsr305/dist/jsr305-lib.jar" todir="${jack-coverage-libs.dir}" />
<!-- Copy required tools for packaging -->
<copy file="../sched/dist/sched-build.jar" todir="${jack-coverage-tools.dir}" />
</target>
<target name="jack-coverage-plugin"
description="build Jack code coverage support"
depends="copy-jack-libs-and-tools">
<mkdir dir="${jack-coverage-build-classes.dir}" />
<javac srcdir="src"
destdir="${jack-coverage-build-classes.dir}"
source="1.7"
target="1.7"
encoding="UTF-8"
debug="true"
includeantruntime="false"
includeDestClasses="false">
<classpath>
<filelist dir="${jack-coverage-libs.dir}">
<file name="jsr305-lib.jar" />
<file name="sched-lib.jar" />
<file name="jack-lib.jar" />
</filelist>
</classpath>
<compilerarg line="-processorpath ${jack-coverage-tools.dir}/sched-build.jar" />
<compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
</javac>
<!-- copy resource files -->
<copy todir="${jack-coverage-build-classes.dir}">
<fileset dir="${jack-coverage-rsc.dir}" />
</copy>
<mkdir dir="${jack-coverage-dist.dir}" />
<jar basedir="${jack-coverage-build-classes.dir}"
destfile="${jack-coverage-dist.dir}/${jack-coverage.execname}" />
</target>
<target name="jack-coverage-tests"
description="build coverage tests"
depends="jack-coverage-plugin">
<mkdir dir="${jack-coverage-build-test-classes.dir}" />
<javac srcdir="tests"
destdir="${jack-coverage-build-test-classes.dir}"
source="1.7"
target="1.7"
encoding="UTF-8"
debug="true"
includeantruntime="false"
includeDestClasses="false">
<exclude name="com/android/jack/coverage/test*/**" />
<classpath>
<filelist dir="${jack-coverage-libs.dir}">
<file name="jsr305-lib.jar" />
<file name="sched-lib.jar" />
<file name="jack-tests.jar" />
<file name="gson.jar" />
</filelist>
<file name="${jack-coverage-dist.dir}/${jack-coverage.execname}" />
</classpath>
</javac>
<!-- Extract jack-tests classes to embed them in the final jar -->
<unzip dest="${jack-coverage-build-test-classes.dir}">
<filelist dir="${jack-coverage-libs.dir}">
<file name="jack-tests.jar" />
<file name="gson.jar" />
</filelist>
</unzip>
<!-- TODO can we strip out Jack tests to only keep infrastrcture ? -->
<jar basedir="${jack-coverage-build-test-classes.dir}"
destfile="${jack-coverage-dist.dir}/${jack-coverage-tests.execname}"
manifest="etc/manifest.txt" />
</target>
<target name="tests-check-config">
<fail message="tests.config is undefined" unless="tests.config" />
</target>
<filelist id="jack.junit.tests.classpath" dir="${jack-coverage-dist.dir}">
<file name="${jack-coverage-tests.execname}" />
</filelist>
<condition property="jack.tests.assertions" value="-da" else="-ea">
<istrue value="${tests.disable-assertions}" />
</condition>
<condition property="jack.tests.runtime.tolerant" value="true" else="false">
<istrue value="${tests.runtime.tolerant}" />
</condition>
<condition property="jack.tests.console-output" value="--console-output" else="">
<istrue value="${tests.console-output}" />
</condition>
<condition property="jack.runtime.version" value="-Druntime.version=${runtime.version}" else="">
<isset property="runtime.version" />
</condition>
<target name="test-jack-coverage"
description="run coverage tests"
depends="jack-coverage-plugin,jack-coverage-tests,tests-check-config">
<mkdir dir="${jack-coverage-tests.output.dir}/html" />
<java fork="true"
resultproperty="test-jack.failure"
classname="com.android.jack.test.junit.JackJunitLauncherXml">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="-Dtests.config=${tests.config}" />
<jvmarg value="-Dtests.runtime.tolerant=${jack.tests.runtime.tolerant}" />
<!-- Assertions do not work with plugin markers -->
<jvmarg value="-da" />
<jvmarg line="${jack.runtime.version}" />
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack-coverage-tests.output.dir}/test-jack-coverage.xml" />
<arg value="${jack-coverage-tests.suite.name}" />
<arg line="${jack.tests.console-output}" />
</java>
<junitreport todir="${jack-coverage-tests.output.dir}">
<fileset dir="${jack-coverage-tests.output.dir}">
<include name="test-jack-coverage.xml" />
</fileset>
<report format="frames" todir="${jack-coverage-tests.output.dir}/html" />
</junitreport>
<fail message="TESTS FAILED">
<condition>
<isfailure code="${test-jack.failure}" />
</condition>
</fail>
</target>
<target name="test-jack-coverage-dump" depends="jack-coverage-tests,tests-check-config">
<mkdir dir="${jack-coverage-tests.dump.dir}" />
<java fork="true"
failonerror="true"
output="${jack-coverage-tests.dump.dir}/AllCoverageTests.js"
classname="com.android.jack.test.junit.JackJUnitLauncher">
<jvmarg value="-Dtests.dump=true" />
<jvmarg value="-Dtests.config=${tests.config}" />
<jvmarg line="${jack.runtime.version}" />
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack-coverage-tests.suite.name}" />
</java>
</target>
<target name="dist" description="distribution of the code coverage plugin" depends="all">
<!-- Placeholder for future release process -->
</target>
</project>