]> git.saurik.com Git - bison.git/commitdiff
examples: factor the test suite.
authorAkim Demaille <demaille@gostai.com>
Fri, 17 Feb 2012 13:59:23 +0000 (14:59 +0100)
committerAkim Demaille <demaille@gostai.com>
Fri, 17 Feb 2012 14:49:00 +0000 (15:49 +0100)
* 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.

examples/calc++/calc++.test [new file with mode: 0755]
examples/calc++/local.mk
examples/calc++/test [deleted file]
examples/local.mk
examples/mfcalc/local.mk
examples/mfcalc/mfcalc.test [new file with mode: 0755]
examples/mfcalc/test [deleted file]
examples/test [new file with mode: 0755]

diff --git a/examples/calc++/calc++.test b/examples/calc++/calc++.test
new file mode 100755 (executable)
index 0000000..904d05f
--- /dev/null
@@ -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 ''
index 839ef865aad3c97aec01b9c88cd99a549cbf07f1..5d9dce023fccc39d8379305173b5b9e6386304f3 100644 (file)
@@ -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 (executable)
index 7930dc2..0000000
+++ /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
index 02e82bb0af0bd440bccd649517a9edec09f387f3..de4d38fc66b11ed82244a8e692beee4c275e525f 100644 (file)
@@ -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
index e34d8d7bb66350ad3fd32403705fc2b1d3629bbf..c6d94708df2b1d33eee4edab7566ddc6589c6937 100644 (file)
@@ -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 (executable)
index 0000000..6f794aa
--- /dev/null
@@ -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/mfcalc/test
deleted file mode 100755 (executable)
index f848bbd..0000000
+++ /dev/null
@@ -1,86 +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
-1+2*3
-EOF
-run 0 7
-run 0 7
-
-cat >input <<EOF
-(1+2) * 3
-EOF
-run 0 9
-
-$exit
diff --git a/examples/test b/examples/test
new file mode 100755 (executable)
index 0000000..6da1667
--- /dev/null
@@ -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