| #! /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 |