From: Akim Demaille Date: Fri, 17 Feb 2012 13:59:23 +0000 (+0100) Subject: examples: factor the test suite. X-Git-Tag: v2.7.90~518 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/5a9c6b89d0cd97f514383bc555a2c14f59bd9c3b examples: factor the test suite. * examples/mfcalc/test, examples/calc++/test: Extract the common bits into... * examples/test: here. (cwd): New. Use it to avoid a race on the temporary directory. Reported by Jim Meyering. * examples/mfcalc/test, examples/calc++/test: Rename into... * examples/mfcalc/mfcalc.test, examples/calc++/calc++.test: these. * examples/calc++/local.mk, examples/mfcalc/local.mk, * examples/local.mk: Adjust. --- diff --git a/examples/calc++/calc++.test b/examples/calc++/calc++.test new file mode 100755 index 00000000..904d05fb --- /dev/null +++ b/examples/calc++/calc++.test @@ -0,0 +1,50 @@ +#! /bin/sh + +# 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 . + +cat >input <input <input <input <. - -me=`dirname $0` -me=`basename $me` - -# Number of the current test. -number=1 - -# Exit status of this script. -exit=true - -# The exercised program. -prog=../examples/$me/$me - -# cleanup -# ------- -cleanup () -{ - local status=$? - if test -z "$DEBUG"; then - cd .. - 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 "$@" - 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` -} - - -cat >input <input <input <input <. + +cat >input <input <. - -me=`dirname $0` -me=`basename $me` - -# Number of the current test. -number=1 - -# Exit status of this script. -exit=true - -# The exercised program. -prog=../examples/$me/$me - -# cleanup -# ------- -cleanup () -{ - local status=$? - if test -z "$DEBUG"; then - cd .. - 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 "$@" - 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` -} - - -cat >input <input <. + +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 "$@" - 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