diff options
author | Akim Demaille <demaille@gostai.com> | 2012-02-17 14:59:23 +0100 |
---|---|---|
committer | Akim Demaille <demaille@gostai.com> | 2012-02-17 15:49:00 +0100 |
commit | 5a9c6b89d0cd97f514383bc555a2c14f59bd9c3b (patch) | |
tree | d302fa8f203367ec183aa06beb512f61c30408ad | |
parent | c3a2e0e6dd060143cbd2854b61e435552883a6b7 (diff) | |
download | bison-5a9c6b89d0cd97f514383bc555a2c14f59bd9c3b.tar.gz |
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.
-rwxr-xr-x | examples/calc++/calc++.test | 50 | ||||
-rw-r--r-- | examples/calc++/local.mk | 4 | ||||
-rwxr-xr-x | examples/calc++/test | 109 | ||||
-rw-r--r-- | examples/local.mk | 3 | ||||
-rw-r--r-- | examples/mfcalc/local.mk | 4 | ||||
-rwxr-xr-x | examples/mfcalc/mfcalc.test | 27 | ||||
-rwxr-xr-x | examples/test (renamed from examples/mfcalc/test) | 25 |
7 files changed, 92 insertions, 130 deletions
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 <http://www.gnu.org/licenses/>. + +cat >input <<EOF +toto := 1 +toto +EOF +run 0 1 -s + + +cat >input <<EOF +a := 1 +b := 2 +c := 3 +d := a + b * c +d +EOF +run 0 7 +run 0 7 -p + + +cat >input <<EOF +a := 1 +b := 2 +c := 3 +d := (a + b) * c +d +EOF +run 0 9 + + +cat >input <<EOF +a := 1 +d := a + b * c +EOF +run 1 '' diff --git a/examples/calc++/local.mk b/examples/calc++/local.mk index 839ef865..5d9dce02 100644 --- a/examples/calc++/local.mk +++ b/examples/calc++/local.mk @@ -64,6 +64,6 @@ examples_calc___calc___SOURCES = \ examples/calc++/calc++-parser.hh examples_calc___calc___CPPFLAGS = -I$(top_srcdir)/examples/calc++ -TESTS += examples/calc++/test +TESTS += examples/calc++/calc++.test endif -EXTRA_DIST += examples/calc++/test +EXTRA_DIST += examples/calc++/calc++.test diff --git a/examples/calc++/test b/examples/calc++/test deleted file mode 100755 index 7930dc21..00000000 --- a/examples/calc++/test +++ /dev/null @@ -1,109 +0,0 @@ -#! /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 <http://www.gnu.org/licenses/>. - -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 "$@" - <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` -} - - -cat >input <<EOF -toto := 1 -toto -EOF -run 0 1 -s - - -cat >input <<EOF -a := 1 -b := 2 -c := 3 -d := a + b * c -d -EOF -run 0 7 -run 0 7 -p - - -cat >input <<EOF -a := 1 -b := 2 -c := 3 -d := (a + b) * c -d -EOF -run 0 9 - - -cat >input <<EOF -a := 1 -d := a + b * c -EOF -run 1 '' - -$exit diff --git a/examples/local.mk b/examples/local.mk index 02e82bb0..de4d38fc 100644 --- a/examples/local.mk +++ b/examples/local.mk @@ -15,7 +15,8 @@ doc = $(top_srcdir)/doc/bison.texinfo extexi = $(top_srcdir)/examples/extexi -dist_noinst_SCRIPTS = examples/extexi +dist_noinst_SCRIPTS = examples/extexi examples/test +TEST_LOG_COMPILER = $(top_srcdir)/examples/test include examples/calc++/local.mk include examples/mfcalc/local.mk diff --git a/examples/mfcalc/local.mk b/examples/mfcalc/local.mk index e34d8d7b..c6d94708 100644 --- a/examples/mfcalc/local.mk +++ b/examples/mfcalc/local.mk @@ -54,5 +54,5 @@ examples_mfcalc_mfcalc_SOURCES = \ $(mfcalc_sources) examples_mfcalc_mfcalc_CPPFLAGS = -I$(top_srcdir)/examples/mfcalc -TESTS += examples/mfcalc/test -EXTRA_DIST += examples/mfcalc/test +TESTS += examples/mfcalc/mfcalc.test +EXTRA_DIST += examples/mfcalc/mfcalc.test diff --git a/examples/mfcalc/mfcalc.test b/examples/mfcalc/mfcalc.test new file mode 100755 index 00000000..6f794aaf --- /dev/null +++ b/examples/mfcalc/mfcalc.test @@ -0,0 +1,27 @@ +#! /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 <http://www.gnu.org/licenses/>. + +cat >input <<EOF +1+2*3 +EOF +run 0 7 +run 0 7 + +cat >input <<EOF +(1+2) * 3 +EOF +run 0 9 diff --git a/examples/mfcalc/test b/examples/test index f848bbda..6da1667b 100755 --- a/examples/mfcalc/test +++ b/examples/test @@ -1,5 +1,5 @@ #! /bin/sh - +set -x # Copyright (C) 2005-2012 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -15,8 +15,7 @@ # 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=`dirname $0` -me=`basename $me` +me=`basename $1 .test` # Number of the current test. number=1 @@ -24,8 +23,11 @@ number=1 # Exit status of this script. exit=true +# top_buiddir. +cwd=`pwd` + # The exercised program. -prog=../examples/$me/$me +prog=$cwd/examples/$me/$me # cleanup # ------- @@ -33,7 +35,7 @@ cleanup () { local status=$? if test -z "$DEBUG"; then - cd .. + cd $cwd rm -rf $$.dir fi exit $status @@ -71,16 +73,7 @@ run () number=`expr $number + 1` } - -cat >input <<EOF -1+2*3 -EOF -run 0 7 -run 0 7 - -cat >input <<EOF -(1+2) * 3 -EOF -run 0 9 +# We have cd'd one level deeper. +. "../$1" $exit |