blob: 5d452d6b12ef6f7acb30f926298f4d094cc38333 [file] [log] [blame]
Austin Schuhdace2a62020-08-18 10:56:48 -07001#! /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 ]