summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <demaille@gostai.com>2012-02-17 14:59:23 +0100
committerAkim Demaille <demaille@gostai.com>2012-02-17 15:49:00 +0100
commit5a9c6b89d0cd97f514383bc555a2c14f59bd9c3b (patch)
treed302fa8f203367ec183aa06beb512f61c30408ad
parentc3a2e0e6dd060143cbd2854b61e435552883a6b7 (diff)
downloadbison-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-xexamples/calc++/calc++.test50
-rw-r--r--examples/calc++/local.mk4
-rwxr-xr-xexamples/calc++/test109
-rw-r--r--examples/local.mk3
-rw-r--r--examples/mfcalc/local.mk4
-rwxr-xr-xexamples/mfcalc/mfcalc.test27
-rwxr-xr-xexamples/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