diff options
Diffstat (limited to 'examples/test')
-rwxr-xr-x | examples/test | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/examples/test b/examples/test new file mode 100755 index 00000000..6da1667b --- /dev/null +++ b/examples/test @@ -0,0 +1,79 @@ +#! /bin/sh +set -x +# Copyright (C) 2005-2012 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 + $prog "$@" - <input >out_eff + # Effective exit status. + local 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. +. "../$1" + +$exit |