| <?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> |