1#! /bin/sh 2 3# Copyright (C) 2000-2002, 2004, 2005, 2011, 2012, 2016 Niels Möller 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License along 16# with this program; if not, write to the Free Software Foundation, Inc., 17# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 19failed=0 20all=0 21 22debug='no' 23testflags='' 24 25if [ -z "$srcdir" ] ; then 26 srcdir=`pwd` 27fi 28 29export srcdir 30 31# When used in make rules, we sometimes get the filenames VPATH 32# expanded, but usually not. 33find_program () { 34 case "$1" in 35 */*) 36 echo "$1" 37 ;; 38 *) 39 if [ -x "$1" ] ; then 40 echo "./$1" 41 else 42 echo "$srcdir/$1" 43 fi 44 ;; 45 esac 46} 47 48env_program () { 49 if [ -x "$1" ] ; then 50 if "$1"; then : ; else 51 echo FAIL: $1 52 exit 1 53 fi 54 fi 55} 56 57TEST_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" 58TEST_DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH" 59 60if [ "$TEST_LIBRARY_PATH" ] ; then 61 TEST_LD_LIBRARY_PATH="$TEST_LIBRARY_PATH:$TEST_LD_LIBRARY_PATH" 62 TEST_DYLD_LIBRARY_PATH="$TEST_LIBRARY_PATH:$TEST_DYLD_LIBRARY_PATH" 63fi 64 65test_program () { 66 testname=`basename "$1" .exe` 67 testname=`basename "$testname" -test` 68 if [ -z "$EMULATOR" ] || head -1 "$1" | grep '^#!' > /dev/null; then 69 LD_LIBRARY_PATH="$TEST_LD_LIBRARY_PATH" \ 70 DYLD_LIBRARY_PATH="$TEST_DYLD_LIBRARY_PATH" \ 71 "$1" $testflags 72 else 73 $EMULATOR "$1" $testflags 74 fi 75 case "$?" in 76 0) 77 echo PASS: $testname 78 all=`expr $all + 1` 79 ;; 80 77) 81 echo SKIP: $testname 82 ;; 83 *) 84 echo FAIL: $testname 85 failed=`expr $failed + 1` 86 all=`expr $all + 1` 87 ;; 88 esac 89} 90 91env_program `find_program setup-env` 92 93while test $# != 0 94do 95 case "$1" in 96 --debug) 97 debug=yes 98 ;; 99 -v) 100 testflags='-v' 101 ;; 102 -*) 103 echo >&2 'Unknown option `'"$1'" 104 exit 1 105 ;; 106 *) 107 break 108 ;; 109 esac 110 shift 111done 112 113# Comment out special handling for zero arguments to support separate 114# tests-build/tests-run. 115#if [ $# -eq 0 ] ; then 116# for f in *-test; do test_program "./$f"; done 117#else 118 for f in "$@" ; do test_program `find_program "$f"`; done 119#fi 120 121if [ $failed -eq 0 ] ; then 122 banner="All $all tests passed" 123else 124 banner="$failed of $all tests failed" 125fi 126dashes=`echo "$banner" | sed s/./=/g` 127echo "$dashes" 128echo "$banner" 129echo "$dashes" 130 131if [ "x$debug" = xno ] ; then 132 env_program `find_program teardown-env` 133fi 134 135[ "$failed" -eq 0 ] 136