| #! /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 <http://www.gnu.org/licenses/>. | |
| 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 "$@" - <input >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 |