#! /bin/sh # Copyright (C) 2005-2015 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . me=`basename $1 .test` # Number of the current test. number=1 # Exit status of this script. exit=true # top_buiddir. cwd=`pwd` # The exercised program. prog=$cwd/examples/$me/$me # cleanup # ------- cleanup () { local status=$? if test -z "$DEBUG"; then cd $cwd rm -rf $$.dir fi exit $status } trap cleanup 0 1 2 13 15 mkdir $$.dir cd $$.dir # run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS] # --------------------------------------------------------- run () { # Expected exit status. local sta_exp=$1 shift # Expected output. local out_exp=$1 shift # Effective exit status. local sta_eff=0 $prog "$@" - out_eff || sta_eff=$? # Effective output. local out_eff=`cat out_eff` if test $sta_eff -eq $sta_exp; then if test "$out_eff" = "$out_exp"; then echo "$me: PASS: $number" else echo "$me: FAIL: $number (expected output: $out_exp, effective: $out_eff)" exit=false fi else echo "$me: FAIL: $number (expected status: $sta_exp, effective: $sta_eff)" exit=false fi number=`expr $number + 1` } # We have cd'd one level deeper. case $1 in /*) . "$1";; *) . "../$1";; esac $exit