linphone-android/tests/custom_rules.xml
2015-06-03 10:29:13 +02:00

70 lines
2.6 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project name="linphone-tester" xmlns:unless="ant:unless">
<target name="test">
<property name="output.file" value="./tests.output" />
<!-- Possible values for test.size are small or large -->
<property name="test.size" value="small" />
<tstamp>
<format property="archive.name" pattern="'linphonetester_'yyyyMMdd_HHmmss" />
</tstamp>
<echo>Adb log files are put in ${archive.name}.zip</echo>
<exec executable="adb" >
<arg value="logcat" />
<arg value="-c" />
</exec>
<exec executable="./adb-log-start.sh" >
<arg value=" ${archive.name}" />
</exec>
<exec executable="bash">
<arg value="-c"/>
<!-- use 'tee' command to write in file AND to stdout.
First is used below to check if tests failed or not
while second is used to get output in real time -->
<arg value="adb shell am instrument -r -w -e size ${test.size} org.linphone.test/com.zutubi.android.junitreport.JUnitReportTestRunner | tee ${output.file}"/>
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="kill `cat adb.pid`" />
</exec>
<condition property="has.crashed" >
<or>
<resourcecontains resource="${output.file}" substring="Process crashed" />
<resourcecontains resource="${output.file}" substring="Native crash" />
<resourcecontains resource="${output.file}" substring="longMsg=junit.framework.AssertionFailedError: View with id: '" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.RuntimeException:" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.NullPointerException:" />
</or>
</condition>
<exec executable="bash" unless:set="has.crashed">
<arg value="-c"/>
<arg value="adb shell run-as org.linphone cat /data/data/org.linphone/files/junit-report.xml > linphone-junit-report-${test.size}.xml"/>
</exec>
<zip destfile="${archive.name}.zip">
<fileset dir="." includes="${archive.name}"/>
</zip>
<antcall target="check-for-crash"/>
<fail message="Tests failed" status="42">
<condition>
<resourcecontains resource="${output.file}" substring="FAILURES" />
</condition>
</fail>
<delete file="${archive.name}"/>
<delete file="${output.file}"/>
</target>
<target name="check-for-crash" if="has.crashed">
<exec executable="bash" >
<arg value="-c" />
<arg value="tail -n 500 ${archive.name}" />
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="cat ${archive.name} |ndk-stack -sym obj/local/`adb shell getprop ro.product.cpu.abi | tr -d '\r'`" />
</exec>
<fail message="Tests crashed" status="125"/>
</target>
</project>