application.package in android_rules.xml and android_test_rules.xml has been replaced by manifest.package which value is taken from AndroidManifest.xml. This is because old versions of build.properties contain already application.package property which has precedence over the extracted one and overrides it. Change-Id: I909e145926169922ec6ec0e179ad88c413aa85b2
109 lines
4.7 KiB
XML
109 lines
4.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project name="android_test_rules" default="run-tests">
|
|
|
|
<import file="android_rules.xml" />
|
|
|
|
<property name="tested.project.absolute.dir" location="${tested.project.dir}" />
|
|
<property name="instrumentation.dir" value="instrumented" />
|
|
<property name="instrumentation.absolute.dir" location="${instrumentation.dir}" />
|
|
|
|
<property name="test.runner" value="android.test.InstrumentationTestRunner" />
|
|
<!-- Application package of the tested project extracted from its manifest file -->
|
|
<xpath input="${tested.project.absolute.dir}/AndroidManifest.xml"
|
|
expression="/manifest/@package" output="tested.manifest.package" />
|
|
|
|
<!-- TODO: make it more configurable in the next CL's - now it is default for auto-generated
|
|
project -->
|
|
<property name="emma.dump.file"
|
|
value="/data/data/${tested.manifest.package}/files/coverage.ec" />
|
|
|
|
<macrodef name="run-tests-helper">
|
|
<attribute name="emma.enabled" default="false" />
|
|
<element name="extra-instrument-args" optional="yes" />
|
|
<sequential>
|
|
<echo>Running tests ...</echo>
|
|
<exec executable="${adb}" failonerror="true">
|
|
<arg value="shell" />
|
|
<arg value="am" />
|
|
<arg value="instrument" />
|
|
<arg value="-w" />
|
|
<arg value="-e" />
|
|
<arg value="coverage" />
|
|
<arg value="@{emma.enabled}" />
|
|
<extra-instrument-args />
|
|
<arg value="${manifest.package}/${test.runner}" />
|
|
</exec>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!-- Invoking this target sets the value of extensible.classpath, which is being added to javac
|
|
classpath in target 'compile' (android_rules.xml) -->
|
|
<target name="-set-coverage-classpath">
|
|
<property name="extensible.classpath"
|
|
location="${instrumentation.absolute.dir}/classes" />
|
|
</target>
|
|
|
|
<!-- Invoking this target sets the value of extensible.classpath, which is being added to javac
|
|
classpath in target 'compile' (android_rules.xml) -->
|
|
<target name="-set-run-tests-classpath">
|
|
<property name="extensible.classpath"
|
|
location="${tested.project.absolute.dir}/bin/classes" />
|
|
</target>
|
|
|
|
<!-- Ensures that tested project is installed on the device before we run the tests.
|
|
Used for ordinary tests, without coverage measurement -->
|
|
<target name="-install-tested-project">
|
|
<subant target="install">
|
|
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="run-tests" depends="-set-run-tests-classpath, -install-tested-project, install"
|
|
description="Runs tests from the package defined in test.package property">
|
|
<run-tests-helper />
|
|
</target>
|
|
|
|
<target name="-install-instrumented">
|
|
<subant target="-install-with-emma">
|
|
<property name="out.absolute.dir" value="${instrumentation.absolute.dir}" />
|
|
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="coverage" depends="-set-coverage-classpath, -install-instrumented, install"
|
|
description="Runs the tests against the instrumented code and generates
|
|
code coverage report">
|
|
<run-tests-helper emma.enabled="true">
|
|
<extra-instrument-args>
|
|
<arg value="-e" />
|
|
<arg value="coverageFile" />
|
|
<arg value="${emma.dump.file}" />
|
|
</extra-instrument-args>
|
|
</run-tests-helper>
|
|
<echo>Downloading coverage file into project directory...</echo>
|
|
<exec executable="${adb}" failonerror="true">
|
|
<arg value="pull" />
|
|
<arg value="${emma.dump.file}" />
|
|
<arg value="coverage.ec" />
|
|
</exec>
|
|
<echo>Extracting coverage report...</echo>
|
|
<emma>
|
|
<report sourcepath="${tested.project.absolute.dir}/${source.dir}"
|
|
verbosity="${verbosity}">
|
|
<!-- TODO: report.dir or something like should be introduced if necessary -->
|
|
<infileset dir=".">
|
|
<include name="coverage.ec" />
|
|
<include name="coverage.em" />
|
|
</infileset>
|
|
<!-- TODO: reports in other, indicated by user formats -->
|
|
<html outfile="coverage.html" />
|
|
</report>
|
|
</emma>
|
|
<echo>Cleaning up temporary files...</echo>
|
|
<delete dir="${instrumentation.absolute.dir}" />
|
|
<delete file="coverage.ec" />
|
|
<delete file="coverage.em" />
|
|
</target>
|
|
|
|
</project>
|