117680Spst#! /bin/sh 298527Sfenner 317680Spst# Copyright (C) 2000-2002, 2004, 2005, 2011, 2012, 2016, 2020 Niels M��ller 417680Spst# 517680Spst# This program is free software; you can redistribute it and/or modify 617680Spst# it under the terms of the GNU General Public License as published by 717680Spst# the Free Software Foundation; either version 2 of the License, or 817680Spst# (at your option) any later version. 917680Spst# 1017680Spst# This program is distributed in the hope that it will be useful, 1117680Spst# but WITHOUT ANY WARRANTY; without even the implied warranty of 1217680Spst# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1317680Spst# GNU General Public License for more details. 1417680Spst# 1517680Spst# You should have received a copy of the GNU General Public License along 1617680Spst# with this program; if not, write to the Free Software Foundation, Inc., 1717680Spst# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 1817680Spst 1917680Spstfailed=0 2017680Spstall=0 2198527Sfenner 2298527Sfennerdebug='no' 2353146Sbriantestflags='' 2417680Spst 2517680Spstif [ -z "$srcdir" ] ; then 2617680Spst srcdir=`pwd` 2717680Spstfi 2817680Spst 2917680Spstexport srcdir 3017680Spst 3117680Spstif [ -n "$TEST_SHLIB_DIR" ] ; then 3275118Sfenner # Prepend to LD_LIBRARY_PATH, if it is alredy set. 3375118Sfenner LD_LIBRARY_PATH="${TEST_SHLIB_DIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" 3417680Spst # For MACOS 3575118Sfenner DYLD_LIBRARY_PATH="$TEST_SHLIB_DIR" 3675118Sfenner # For Windows 3775118Sfenner PATH="${TEST_SHLIB_DIR}:${PATH}" 3875118Sfenner # For Wine 3975118Sfenner WINEPATH="${TEST_SHLIB_DIR}${WINEPATH:+;$WINEPATH}" 4075118Sfenner 4175118Sfenner export LD_LIBRARY_PATH 4275118Sfenner export DYLD_LIBRARY_PATH 4375118Sfenner export PATH 4498527Sfenner export WINEPATH 4598527Sfennerfi 4675118Sfenner 4775118Sfenner# When used in make rules, we sometimes get the filenames VPATH 4875118Sfenner# expanded, but usually not. 4998527Sfennerfind_program () { 5098527Sfenner case "$1" in 5175118Sfenner */*) 5275118Sfenner echo "$1" 5375118Sfenner ;; 5498527Sfenner *) 5575118Sfenner if [ -x "$1" ] ; then 5675118Sfenner echo "./$1" 5798527Sfenner elif [ -x "$1.exe" ] ; then 5875118Sfenner echo "./$1.exe" 5975118Sfenner else 6098527Sfenner echo "$srcdir/$1" 6198527Sfenner fi 6298527Sfenner ;; 6398527Sfenner esac 6417680Spst} 6517680Spst 6698527Sfennerenv_program () { 6717680Spst if [ -x "$1" ] ; then 6817680Spst if "$1"; then : ; else 6939297Sfenner echo FAIL: $1 7017680Spst exit 1 7117680Spst fi 7239297Sfenner fi 7317680Spst} 7417680Spst 7517680Spsttest_program () { 7656896Sfenner testname=`basename "$1" .exe` 7756896Sfenner testname=`basename "$testname" -test` 7817680Spst if [ -z "$EMULATOR" ] || head -1 "$1" | grep '^#!' > /dev/null; then 7917680Spst "$1" $testflags 8075118Sfenner else 8117680Spst $EMULATOR "$1" $testflags 8217680Spst fi 8356896Sfenner case "$?" in 8417680Spst 0) 8556896Sfenner echo PASS: $testname 8698527Sfenner all=`expr $all + 1` 8798527Sfenner ;; 8856896Sfenner 77) 8917680Spst echo SKIP: $testname 9017680Spst ;; 9117680Spst *) 9217680Spst echo FAIL: $testname 9317680Spst failed=`expr $failed + 1` 9417680Spst all=`expr $all + 1` 9556896Sfenner ;; 9675118Sfenner esac 9717680Spst} 9826180Sfenner 9926180Sfennerenv_program `find_program setup-env` 10026180Sfenner 10126180Sfennerwhile test $# != 0 10226180Sfennerdo 10326180Sfenner case "$1" in 10426180Sfenner --debug) 10526180Sfenner debug=yes 10626180Sfenner ;; 10726180Sfenner -v) 10826180Sfenner testflags='-v' 10998527Sfenner ;; 11098527Sfenner -*) 11156896Sfenner echo >&2 'Unknown option `'"$1'" 11298527Sfenner exit 1 11356896Sfenner ;; 11426180Sfenner *) 11526180Sfenner break 11626180Sfenner ;; 11726180Sfenner esac 11826180Sfenner shift 11926180Sfennerdone 12026180Sfenner 12126180Sfenner# Comment out special handling for zero arguments to support separate 12226180Sfenner# tests-build/tests-run. 12326180Sfenner#if [ $# -eq 0 ] ; then 12426180Sfenner# for f in *-test; do test_program "./$f"; done 12526180Sfenner#else 12626180Sfenner for f in "$@" ; do test_program `find_program "$f"`; done 12726180Sfenner#fi 12826180Sfenner 12926180Sfennerif [ $failed -eq 0 ] ; then 13026180Sfenner banner="All $all tests passed" 13117680Spstelse 13217680Spst banner="$failed of $all tests failed" 13317680Spstfi 13417680Spstdashes=`echo "$banner" | sed s/./=/g` 13517680Spstecho "$dashes" 13617680Spstecho "$banner" 13717680Spstecho "$dashes" 13817680Spst 13917680Spstif [ "x$debug" = xno ] ; then 14098348Sfenner env_program `find_program teardown-env` 14198348Sfennerfi 14298348Sfenner 14398348Sfenner[ "$failed" -eq 0 ] 14498348Sfenner