run-test revision 2994e29b57ff57ce3d59a26a01e27e674bd6238b
12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes#!/bin/bash 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# Copyright (C) 2007 The Android Open Source Project 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# Licensed under the Apache License, Version 2.0 (the "License"); 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# you may not use this file except in compliance with the License. 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# You may obtain a copy of the License at 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# http://www.apache.org/licenses/LICENSE-2.0 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# Unless required by applicable law or agreed to in writing, software 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# distributed under the License is distributed on an "AS IS" BASIS, 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# See the License for the specific language governing permissions and 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes# limitations under the License. 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# Set up prog to be the path of this script, including following symlinks, 185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# and set up progdir to be the fully-qualified pathname of its directory. 195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoprog="$0" 20741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hugheswhile [ -h "${prog}" ]; do 21741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes newProg=`/bin/ls -ld "${prog}"` 22741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes newProg=`expr "${newProg}" : ".* -> \(.*\)$"` 235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if expr "x${newProg}" : 'x/' >/dev/null; then 245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao prog="${newProg}" 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao progdir=`dirname "${prog}"` 275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao prog="${progdir}/${newProg}" 28741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 29741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesdone 30741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesoldwd=`pwd` 31741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesprogdir=`dirname "${prog}"` 325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaocd "${progdir}" 335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoprogdir=`pwd` 345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoprog="${progdir}"/`basename "${prog}"` 355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest_dir="test-$$" 365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ -z "$TMPDIR" ]; then 375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao tmp_dir="/tmp/$USER/${test_dir}" 385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoelse 395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao tmp_dir="${TMPDIR}/$USER/${test_dir}" 405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport JAVA="java" 435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport JAVAC="javac -g" 445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport RUN="${progdir}/etc/push-and-run-test-jar" 455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport DEX_LOCATION=/data/run-test/${test_dir} 465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport NEED_DEX="true" 475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# If dx was not set by the environment variable, assume it is in the path. 495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ -z "$DX" ]; then 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao export DX="dx" 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# If jasmin was not set by the environment variable, assume it is in the path. 545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ -z "$JASMIN" ]; then 555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao export JASMIN="jasmin" 565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoinfo="info.txt" 605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaobuild="build" 615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaorun="run" 625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexpected="expected.txt" 635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaocheck_cmd="check" 645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaooutput="output.txt" 655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaobuild_output="build-output.txt" 665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaolib="libartd.so" 675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaorun_args="--quiet" 685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoprebuild_mode="yes" 705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotarget_mode="yes" 715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaodev_mode="no" 725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoupdate_mode="no" 735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaodebug_mode="no" 745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaorelocate="yes" 755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoruntime="art" 765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaousage="no" 775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaobuild_only="no" 785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaosuffix64="" 79741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughestrace="false" 80741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesalways_clean="no" 81741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 82741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hugheswhile true; do 83741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "x$1" = "x--host" ]; then 84741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes target_mode="no" 85741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes DEX_LOCATION=$tmp_dir 86741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 87741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--jvm" ]; then 88741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes target_mode="no" 89741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes runtime="jvm" 90741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes NEED_DEX="false" 91741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 92741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x-O" ]; then 93741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes lib="libart.so" 94741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 95741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--dalvik" ]; then 96741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes lib="libdvm.so" 97741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes runtime="dalvik" 98741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 99741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--relocate" ]; then 100741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes relocate="yes" 101741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 102741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--no-relocate" ]; then 103741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes relocate="no" 104741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 105741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--prebuild" ]; then 106741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes prebuild_mode="yes" 107741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift; 108741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--no-prebuild" ]; then 109741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes prebuild_mode="no" 110741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift; 111741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x--image" ]; then 112741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 113741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes image="$1" 114741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes run_args="${run_args} --image $image" 115741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 116741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes elif [ "x$1" = "x-Xcompiler-option" ]; then 117741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 118741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes option="$1" 119741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes run_args="${run_args} -Xcompiler-option $option" 120741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes shift 1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--runtime-option" ]; then 1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao option="$1" 1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --runtime-option $option" 1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--debug" ]; then 1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --debug" 1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--gdb" ]; then 1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --gdb" 1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao dev_mode="yes" 1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--zygote" ]; then 1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --zygote" 1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--interpreter" ]; then 1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --interpreter" 1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--no-verify" ]; then 1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --no-verify" 1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--no-optimize" ]; then 1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --no-optimize" 1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--no-precise" ]; then 1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --no-precise" 1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--invoke-with" ]; then 1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao what="$1" 1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "x$what" = "x" ]; then 1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "$0 missing argument to --invoke-with" 1>&2 1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao break 1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 1565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --invoke-with ${what}" 1575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--dev" ]; then 1595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --dev" 1605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao dev_mode="yes" 1615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--build-only" ]; then 1635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao build_only="yes" 1645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--output-path" ]; then 1665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao tmp_dir=$1 1685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "x$tmp_dir" = "x" ]; then 1695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "$0 missing argument to --output-path" 1>&2 1705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 1715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao break 1725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 1735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--update" ]; then 1755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao update_mode="yes" 1765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--help" ]; then 1785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 1795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--64" ]; then 1815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --64" 1825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao suffix64="64" 1835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--trace" ]; then 1855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao trace="true" 1865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif [ "x$1" = "x--always-clean" ]; then 1885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao always_clean="yes" 1895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 1905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao elif expr "x$1" : "x--" >/dev/null 2>&1; then 1915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "unknown $0 option: $1" 1>&2 1925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 1935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao break 1945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 1955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao break 1965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 1975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaodone 1985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaomkdir -p $tmp_dir 1995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$trace" = "true" ]; then 2015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --runtime-option -Xmethod-trace --runtime-option -Xmethod-trace-file:${DEX_LOCATION}/trace.bin --runtime-option -Xmethod-trace-file-size:2000000" 2025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# Most interesting target architecture variables are Makefile variables, not environment variables. 2055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# Try to map the suffix64 flag and what we find in ${ANDROID_PRODUCT_OUT}/data/art-test to an architecture name. 2065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofunction guess_arch_name() { 2075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao grep32bit=`ls ${ANDROID_PRODUCT_OUT}/data/art-test | grep -E '^(arm|x86|mips)$'` 2085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao grep64bit=`ls ${ANDROID_PRODUCT_OUT}/data/art-test | grep -E '^(arm64|x86_64)$'` 2095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "x${suffix64}" = "x64" ]; then 2105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao target_arch_name=${grep64bit} 2115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao target_arch_name=${grep32bit} 2135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 2155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$target_mode" = "no" ]; then 2175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$runtime" = "jvm" ]; then 2185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao RUN="${progdir}/etc/reference-run-test-classes" 2195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$prebuild_mode" = "yes" ]; then 2205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "--prebuild with --jvm is unsupported"; 2215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao exit 1; 2225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao RUN="${progdir}/etc/host-run-test-jar" 2255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$prebuild_mode" = "yes" ]; then 2265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --prebuild" 2275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoelse 2305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$prebuild_mode" = "yes" ]; then 2315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao RUN="${progdir}/etc/push-and-run-prebuilt-test-jar" 2325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ ! "$runtime" = "jvm" ]; then 2365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --lib $lib" 2375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$runtime" = "dalvik" ]; then 2405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$target_mode" = "no" ]; then 2415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao framework="${ANDROID_PRODUCT_OUT}/system/framework" 2425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao bpath="${framework}/core.jar:${framework}/conscrypt.jar:${framework}/okhttp.jar:${framework}/core-junit.jar:${framework}/bouncycastle.jar:${framework}/ext.jar" 2435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --boot -Xbootclasspath:${bpath}" 2445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao true # defaults to using target BOOTCLASSPATH 2465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoelif [ "$runtime" = "art" ]; then 2485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$target_mode" = "no" ]; then 2495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao # ANDROID_BUILD_TOP and ANDROID_HOST_OUT are not set in a build environment. 2505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ -z "$ANDROID_BUILD_TOP" ]; then 2515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao export ANDROID_BUILD_TOP=$oldwd 2525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ -z "$ANDROID_HOST_OUT" ]; then 2545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao export ANDROID_HOST_OUT=$ANDROID_BUILD_TOP/out/host/linux-x86 2555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --boot -Ximage:${ANDROID_HOST_OUT}/framework/core.art" 2575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --runtime-option -Djava.library.path=${ANDROID_HOST_OUT}/lib${suffix64}" 2585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao guess_arch_name 2605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --runtime-option -Djava.library.path=/data/art-test/${target_arch_name}" 2615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --boot -Ximage:/data/art-test/core.art" 2625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$relocate" = "yes" ]; then 2645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --relocate" 2655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_args="${run_args} --no-relocate" 2675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$dev_mode" = "yes" -a "$update_mode" = "yes" ]; then 2715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "--dev and --update are mutually exclusive" 1>&2 2725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 2735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$usage" = "no" ]; then 2765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "x$1" = "x" -o "x$1" = "x-" ]; then 2775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao test_dir=`basename "$oldwd"` 2785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao else 2795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao test_dir="$1" 2805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ '!' -d "$test_dir" ]; then 2835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao td2=`echo ${test_dir}-*` 2845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ '!' -d "$td2" ]; then 2855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "${test_dir}: no such test directory" 1>&2 2865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao usage="yes" 2875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao test_dir="$td2" 2895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 2905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao # Shift to get rid of the test name argument. The rest of the arguments 2915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao # will get passed to the test run. 2925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shift 2935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 2945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$usage" = "yes" ]; then 2965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao prog=`basename $prog` 2975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao ( 2985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "usage:" 2995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " $prog --help Print this message." 3005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " $prog [options] [test-name] Run test normally." 3015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " $prog --dev [options] [test-name] Development mode" \ 3025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "(dumps to stdout)." 3035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " $prog --update [options] [test-name] Update mode" \ 3045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "(replaces expected.txt)." 3055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo ' Omitting the test name or specifying "-" will use the' \ 3065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "current directory." 3075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " Runtime Options:" 3085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " -O Run non-debug rather than debug build (off by default)." 3095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " -Xcompiler-option Pass an option to the compiler." 3105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --runtime-option Pass an option to the runtime." 3115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --debug Wait for a debugger to attach." 3125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --gdb Run under gdb; incompatible with some tests." 3135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --build-only Build test files only (off by default)." 3145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --interpreter Enable interpreter only mode (off by default)." 3155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --no-verify Turn off verification (on by default)." 3165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --no-optimize Turn off optimization (on by default)." 3175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --no-precise Turn off precise GC (on by default)." 3185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --zygote Spawn the process from the Zygote." \ 3195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "If used, then the" 3205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " other runtime options are ignored." 3215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --prebuild Run dex2oat on the files before starting test. (default)" 3225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --no-prebuild Do not run dex2oat on the files before starting" 3235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " the test." 3245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --relocate Force the use of relocating in the test, making" 3255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " the image and oat files be relocated to a random" 3265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " address before running. (default)" 3275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --no-relocate Force the use of no relocating in the test" 3285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --host Use the host-mode virtual machine." 3295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --invoke-with Pass --invoke-with option to runtime." 3305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --dalvik Use Dalvik (off by default)." 3315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --jvm Use a host-local RI virtual machine." 3325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --output-path [path] Location where to store the build" \ 3335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "files." 3345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --64 Run the test in 64-bit mode" 3355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --trace Run with method tracing" 3365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo " --always-clean Delete the test files even if the test fails." 3375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao ) 1>&2 338582a7d16bb0db323d8bd730beb61578aa3765f43Elliott Hughes exit 1 3395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 340582a7d16bb0db323d8bd730beb61578aa3765f43Elliott Hughes 3415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaocd "$test_dir" 3425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest_dir=`pwd` 3435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotd_info="${test_dir}/${info}" 3455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotd_expected="${test_dir}/${expected}" 3465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 347582a7d16bb0db323d8bd730beb61578aa3765f43Elliott Hughesif [ ! -r $td_info ]; then 348582a7d16bb0db323d8bd730beb61578aa3765f43Elliott Hughes echo "${test_dir}: missing file $td_info" 1>&2 3495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao exit 1 3505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 3515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ ! -r $td_expected ]; then 3535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "${test_dir}: missing file $td_expected" 1>&2 3545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao exit 1 3555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 3565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# copy the test to a temp dir and run it 3585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoecho "${test_dir}: building..." 1>&2 3605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaorm -rf "$tmp_dir" 3625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaocp -Rp "$test_dir" "$tmp_dir" 363741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughescd "$tmp_dir" 3645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ '!' -r "$build" ]; then 3665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao cp "${progdir}/etc/default-build" build 3675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 3685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ '!' -r "$run" ]; then 3705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao cp "${progdir}/etc/default-run" run 3715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 3725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ '!' -r "$check_cmd" ]; then 3745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao cp "${progdir}/etc/default-check" check 3755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofi 3765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaochmod 755 "$build" 3785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaochmod 755 "$run" 3795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaochmod 755 "$check_cmd" 3805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoexport TEST_NAME=`basename ${test_dir}` 3825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao# To cause tests to fail fast, limit the file sizes created by dx, dex2oat and ART output to 2MB. 3845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaofile_size_limit=2048 3857a549467e332398229724058c07d998d0acfb0bbJeff Haoif echo "$test_dir" | grep 089; then 3867a549467e332398229724058c07d998d0acfb0bbJeff Hao file_size_limit=5120 3877a549467e332398229724058c07d998d0acfb0bbJeff Haoelif echo "$test_dir" | grep 083; then 3887a549467e332398229724058c07d998d0acfb0bbJeff Hao file_size_limit=5120 3897a549467e332398229724058c07d998d0acfb0bbJeff Haoelif echo "$test_dir" | grep 115; then 3907a549467e332398229724058c07d998d0acfb0bbJeff Hao# Native bridge test copies libarttest.so into its directory, which needs 2MB already. 3917a549467e332398229724058c07d998d0acfb0bbJeff Hao file_size_limit=5120 3927a549467e332398229724058c07d998d0acfb0bbJeff Haofi 3937a549467e332398229724058c07d998d0acfb0bbJeff Haoif ! ulimit -S "$file_size_limit"; then 3947a549467e332398229724058c07d998d0acfb0bbJeff Hao echo "ulimit file size setting failed" 3957a549467e332398229724058c07d998d0acfb0bbJeff Haofi 3965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaogood="no" 3985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoif [ "$dev_mode" = "yes" ]; then 3995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "./${build}" 2>&1 4005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao build_exit="$?" 4015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "build exit status: $build_exit" 1>&2 4025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$build_exit" = '0' ]; then 4035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "${test_dir}: running..." 1>&2 4045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "./${run}" $run_args "$@" 2>&1 4055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao run_exit="$?" 4065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "run exit status: $run_exit" 1>&2 4075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$run_exit" = "0" ]; then 4085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao good="yes" 4095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 4105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao fi 4115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoelif [ "$update_mode" = "yes" ]; then 4125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao "./${build}" >"$build_output" 2>&1 4135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao build_exit="$?" 4145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if [ "$build_exit" = '0' ]; then 4155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao echo "${test_dir}: running..." 1>&2 416923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes "./${run}" $run_args "$@" >"$output" 2>&1 417923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes sed -e 's/[[:cntrl:]]$//g' < "$output" >"${td_expected}" 418923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes good="yes" 419923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes else 420923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes cat "$build_output" 1>&2 421923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "build exit status: $build_exit" 1>&2 422923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes fi 423923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hugheselif [ "$build_only" = "yes" ]; then 424923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes good="yes" 425923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes "./${build}" >"$build_output" 2>&1 426923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes build_exit="$?" 427923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes if [ "$build_exit" '!=' '0' ]; then 428923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes cp "$build_output" "$output" 429923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "build exit status: $build_exit" >>"$output" 430923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes diff --strip-trailing-cr -q "$expected" "$output" >/dev/null 431923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes if [ "$?" '!=' "0" ]; then 432923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes good="no" 433923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "BUILD FAILED For ${TEST_NAME}" 434923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes fi 435923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes fi 436923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes # Clean up extraneous files that are not used by tests. 437923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes find $tmp_dir -mindepth 1 ! -regex ".*/\(.*jar\|$output\|$expected\)" | xargs rm -rf 438923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes exit 0 439923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hugheselse 440923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes "./${build}" >"$build_output" 2>&1 441923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes build_exit="$?" 442923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes if [ "$build_exit" = '0' ]; then 443923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "${test_dir}: running..." 1>&2 444923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes "./${run}" $run_args "$@" >"$output" 2>&1 445923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes else 446923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes cp "$build_output" "$output" 447923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "build exit status: $build_exit" >>"$output" 448923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes fi 449923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes ./$check_cmd "$expected" "$output" 450923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes if [ "$?" = "0" ]; then 451923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes # output == expected 452923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes good="yes" 453923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes echo "${test_dir}: succeeded!" 1>&2 454923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes fi 455923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughesfi 456923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes 457923e8b8e936ead33408e111682aa9372e3a7ed43Elliott Hughes( 458741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$good" != "yes" -a "$update_mode" != "yes" ]; then 459741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo "${test_dir}: FAILED!" 460741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo ' ' 461741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo '#################### info' 462741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes cat "${td_info}" | sed 's/^/# /g' 463741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo '#################### diffs' 464741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes diff --strip-trailing-cr -u "$expected" "$output" | tail -n 500 465741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo '####################' 466741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo ' ' 467741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 468741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 469741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes) 1>&2 470741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 471741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes# Clean up test files. 472741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesif [ "$always_clean" = "yes" -o "$good" = "yes" ]; then 473741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes cd "$oldwd" 474741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes rm -rf "$tmp_dir" 475741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$target_mode" = "yes" -a "$build_exit" = "0" ]; then 476741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes adb shell rm -rf $DEX_LOCATION 477741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 478741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$good" = "yes" ]; then 479741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes exit 0 480741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 481741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesfi 482741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 483741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 484741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes( 485741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$always_clean" = "yes" ]; then 486741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo "${TEST_NAME} files deleted from host " 487741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$target_mode" == "yes" ]; then 488741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo "and from target" 489741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 490741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes else 491741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo "${TEST_NAME} files left in ${tmp_dir} on host" 492741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes if [ "$target_mode" == "yes" ]; then 493741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes echo "and in ${DEX_LOCATION} on target" 494741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 495741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes fi 496741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 497741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes) 1>&2 498741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes 499741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughesexit 1 500741b5b7ef4c7fd4a786364bbf60d515489caff47Elliott Hughes