From: Akim Demaille Date: Thu, 30 Aug 2001 15:36:37 +0000 (+0000) Subject: * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove. X-Git-Tag: BISON-1_29~4 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/d63e24071f5f6c1fb0135073c082cd504412ca55?ds=inline * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove. * m4/atconfig.m4: Remove. * tests/testsuite.at, tests/atlocal.in, tests/output.at, * tests/bison: New. * tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER, m4_if, m4_patsubst, and m4_regexp. * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an `input' file instead of echo. --- diff --git a/ChangeLog b/ChangeLog index 39a7d639..fc160a99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2001-08-30 Akim Demaille + + * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove. + * m4/atconfig.m4: Remove. + * tests/testsuite.at, tests/atlocal.in, tests/output.at, + * tests/bison: New. + * tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER, + m4_if, m4_patsubst, and m4_regexp. + * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an + `input' file instead of echo. + 2001-08-29 Akim Demaille Bump to 1.28e. diff --git a/configure.in b/configure.in index b0700064..7cf04f53 100644 --- a/configure.in +++ b/configure.in @@ -1,12 +1,31 @@ -# Process this file with autoconf to produce a configure script. -AC_PREREQ(2.52) -AC_INIT(bison, 1.28e, bug-bison@gnu.org) +# Configure template for GNU Bison. -*-Autoconf-*- +# +# 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA + +# We need a recent Autoconf to run a recent Autotest. +AC_PREREQ(2.52e) + +AC_INIT([GNU Bison], [1.28e], [bug-bison@gnu.org]) AC_CONFIG_AUX_DIR(config) -AM_INIT_AUTOMAKE(bison, 1.28e) + +AM_INIT_AUTOMAKE([bison], [1.28e]) AM_CONFIG_HEADER(config.h:config.hin) # Initialize the test suite. -AT_CONFIG(../src) +AC_CONFIG_TESTDIR(tests) # Checks for programs. AC_PROG_CC @@ -83,4 +102,4 @@ AC_OUTPUT([Makefile intl/Makefile po/Makefile.in lib/Makefile src/Makefile doc/Makefile m4/Makefile - tests/Makefile tests/atconfig]) + tests/Makefile]) diff --git a/m4/Makefile.am b/m4/Makefile.am index 82e99cd9..3ed90aa4 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -1,6 +1,5 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- EXTRA_DIST = \ -atconfig.m4 \ c-bs-a.m4 \ codeset.m4 \ error.m4 \ diff --git a/m4/atconfig.m4 b/m4/atconfig.m4 deleted file mode 100644 index f4a4de49..00000000 --- a/m4/atconfig.m4 +++ /dev/null @@ -1,22 +0,0 @@ -## ----------------------## -## Prepare for testing. ## -## ----------------------## - -# serial 2 - -# Single argument says where are built sources to test, relative to the -# built test directory. Maybe omitted if the same (flat distribution). - -AC_DEFUN([AT_CONFIG], -[AT_TESTPATH=ifelse([$1], [], [.], [$1]) -AC_SUBST([AT_TESTPATH]) -# Try to be compatible with both Autoconf 2.13 and 2.50. -if test -z "$ECHO_C$ECHO_N$ECHO_T"; then - ECHO_C="$ac_c" - ECHO_N="$ac_n" - ECHO_T="$ac_t" - AC_SUBST([ECHO_C]) - AC_SUBST([ECHO_N]) - AC_SUBST([ECHO_T]) -fi -]) diff --git a/tests/Makefile.am b/tests/Makefile.am index bd17ad60..3d8d0d27 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -18,23 +18,34 @@ ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. -# Distribute the testsuite since GNU M4 is needed to build it. -noinst_SCRIPTS = testsuite +EXTRA_DIST = atlocal.in bison $(TESTSUITE_AT) testsuite -SUITE = calc.at regression.at +DISTCLEANFILES = atconfig atlocal +MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) -EXTRA_DIST = atgeneral.m4 suite.at $(SUITE) $(noinst_SCRIPTS) +TESTSUITE_AT = \ + testsuite.at \ + output.at calc.at regression.at +TESTSUITE = $(srcdir)/testsuite -check-local: atconfig $(srcdir)/testsuite - $(SHELL) $(srcdir)/testsuite +AUTOM4TE = autom4te +AUTOTEST = $(AUTOM4TE) --language=autotest +$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT) + $(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp + mv $@.tmp $@ -testsuite: atgeneral.m4 suite.at $(SUITE) - $(M4) -I $(srcdir) atgeneral.m4 suite.at | \ - sed -e 's/[ ]*$$//' | \ - sed -e '/^$$/N;/\n$$/D' > $@-tmp - chmod +x $@-tmp - mv $@-tmp $@ +atconfig: $(top_builddir)/config.status + cd $(top_builddir) && ./config.status tests/$@ -CLEANFILES = debug-*.sh empty -DISTCLEANFILES = atconfig -MAINTAINERCLEANFILES = testsuite +atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status + cd $(top_builddir) && ./config.status tests/$@ + +clean-local: + $(SHELL) $(TESTSUITE) --clean + +check-local: atconfig atlocal $(TESTSUITE) + $(SHELL) $(TESTSUITE) + +# Run the test suite on the *installed* tree. +installcheck-local: + $(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin diff --git a/tests/atconfig.in b/tests/atconfig.in deleted file mode 100644 index 3d1bb789..00000000 --- a/tests/atconfig.in +++ /dev/null @@ -1,97 +0,0 @@ -# @configure_input@ -*- shell-script -*- -# Configurable variable values for building test suites. -# Copyright (C) 2000, 2001 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# This script is part of Autotest. Unlimited permission to copy, -# distribute and modify the testing scripts that are the output of -# that Autotest script is given. You need not follow the terms of the -# GNU General Public License when using or distributing such scripts, -# even though portions of the text of Autotest appear in them. The -# GNU General Public License (GPL) does govern all other use of the -# material that constitutes the Autotest. -# -# Certain portions of the Autotest source text are designed to be -# copied (in certain cases, depending on the input) into the output of -# Autotest. We call these the "data" portions. The rest of the -# Autotest source text consists of comments plus executable code that -# decides which of the data portions to output in any given case. We -# call these comments and executable code the "non-data" portions. -# Autotest never copies any of the non-data portions into its output. -# -# This special exception to the GPL applies to versions of Autotest -# released by the Free Software Foundation. When you make and -# distribute a modified version of Autotest, you may extend this -# special exception to the GPL to apply to your modified version as -# well, *unless* your modified version has the potential to copy into -# its output some of the text that was the non-data portion of the -# version that you started with. (In other words, unless your change -# moves or copies text from the non-data portions to the data -# portions.) If your modification has such potential, you must delete -# any notice of this special exception to the GPL from your modified -# version. - -# Snippet (1 -# This debugging script has been automatically generated from `make check'. -# Call it with `--help' to get a quick usage summary. - -at_package='@PACKAGE@' -at_version='@VERSION@' -# Snippet )1 -# Snippet (2 -at_n='@ECHO_N@' -at_c='@ECHO_C@' -test -f atlocal && . ./atlocal - -# LC_MESSAGES is always shadowed by LC_ALL. Here are the only cases: -# - GNU: LANGUAGE -> LC_ALL -> LC_MESSAGES -> LANG -# - POSIX: LC_ALL -> LC_MESSAGES -> LANG -# - XPG4: LC_ALL -> LANG -# - SysV/XPG2: LANG -export LANGUAGE; LANGUAGE=C -export LANG; LANG=C -export LC_ALL; LC_ALL=C - -srcdir=@srcdir@ -top_srcdir=@top_srcdir@ -# Use absolute file notations, as the test might change directories. -at_srcdir=`cd @srcdir@ && pwd` -at_top_srcdir=`cd @top_srcdir@ && pwd` -at_builddir=`pwd` -at_top_builddir=`cd .. && pwd` -if test -n "@AT_TESTPATH@"; then - export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH -else - export PATH; PATH=`pwd`:$PATH -fi - -# We need GNU M4. -M4='@M4@' - -# We need a C compiler. -CC='@CC@' -CFLAGS='@CFLAGS@' - -# We need `config.h'. -CPPFLAGS="-I$at_top_builddir @CPPFLAGS@" - -# We want to use the files shipped with Bison. -BISON_SIMPLE=$at_top_srcdir/src/bison.simple -export BISON_SIMPLE -BISON_HAIRY=$at_top_srcdir/src/bison.hairy -export BISON_HAIRY -# Snippet )2 diff --git a/tests/atgeneral.m4 b/tests/atgeneral.m4 deleted file mode 100644 index 1387b754..00000000 --- a/tests/atgeneral.m4 +++ /dev/null @@ -1,420 +0,0 @@ -divert(-1) -*- Autoconf -*- -# `m4' macros used in building test suites. -# Copyright (C) 2000 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# This script is part of Autotest. Unlimited permission to copy, -# distribute and modify the testing scripts that are the output of -# that Autotest script is given. You need not follow the terms of the -# GNU General Public License when using or distributing such scripts, -# even though portions of the text of Autotest appear in them. The -# GNU General Public License (GPL) does govern all other use of the -# material that constitutes the Autotest. -# -# Certain portions of the Autotest source text are designed to be -# copied (in certain cases, depending on the input) into the output of -# Autotest. We call these the "data" portions. The rest of the -# Autotest source text consists of comments plus executable code that -# decides which of the data portions to output in any given case. We -# call these comments and executable code the "non-data" portions. -# Autotest never copies any of the non-data portions into its output. -# -# This special exception to the GPL applies to versions of Autotest -# released by the Free Software Foundation. When you make and -# distribute a modified version of Autotest, you may extend this -# special exception to the GPL to apply to your modified version as -# well, *unless* your modified version has the potential to copy into -# its output some of the text that was the non-data portion of the -# version that you started with. (In other words, unless your change -# moves or copies text from the non-data portions to the data -# portions.) If your modification has such potential, you must delete -# any notice of this special exception to the GPL from your modified -# version. - -changequote() -changequote([, ]) - -define([AT_DEFINE], defn([define])) -define([AT_EVAL], defn([eval])) -define([AT_FORMAT], defn([format])) -define([AT_INCLUDE], defn([include])) -define([AT_SHIFT], defn([shift])) -define([AT_UNDEFINE], defn([undefine])) - -undefine([define]) -undefine([eval]) -undefine([format]) -undefine([include]) -undefine([shift]) -undefine([undefine]) - - -# AT_CASE(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) -# ----------------------------------------------------------- -# m4 equivalent of -# switch (SWITCH) -# { -# case VAL1: -# IF-VAL1; -# break; -# case VAL2: -# IF-VAL2; -# break; -# ... -# default: -# DEFAULT; -# break; -# }. -# All the values are optional, and the macro is robust to active -# symbols properly quoted. -AT_DEFINE([AT_CASE], -[ifelse([$#], 0, [], - [$#], 1, [], - [$#], 2, [$2], - [$1], [$2], [$3], - [AT_CASE([$1], AT_SHIFT(AT_SHIFT(AT_SHIFT($@))))])]) - - -# Use of diversions: -# 0 - overall initialization; for each test group: skipping and cleanups; -# 1 - for each test group: proper code, to reinsert between cleanups; -# 2 - overall wrap up: generation of debugging scripts and statistics. - - -# AT_LINE -# ------- -# Return the current file sans directory, a colon, and the current line. -AT_DEFINE([AT_LINE], -[patsubst(__file__, ^.*/\(.*\), \1):__line__]) - - -# AT_INIT(PROGRAM) -# ---------------- -# Begin testing suite, using PROGRAM to check version. The search path -# should be already preset so the proper executable will be selected. -AT_DEFINE([AT_INIT], -[AT_DEFINE(AT_ordinal, 0) -. ./atconfig -# Snippet (3 -# -e sets to true -at_stop_on_error=false; -# Shall we save and check stdout and stderr? -# -n sets to false -at_check_stds=:; -# Shall we -# -s sets to false, and -v to true -at_verbose=false - -at_usage="Usage: $[0] [OPTION]... - - -e Abort the full suite and inhibit normal clean up if a test fails - -n Do not redirect stdout and stderr and do not test their contents - -s Inhibit verbosity while generating or executing debugging scripts - -v Force more detailed output, default for debugging scripts unless -s - -x Have the shell to trace command execution; also implies option -n" - -# Snippet )3 - -# Snippet (4 -while test $[#] -gt 0; do - case "$[1]" in - --help) echo "$at_usage"; exit 0 ;; - --version) echo "$[0] ($at_package) $at_version"; exit 0 ;; - -e) at_stop_on_error=:;; - -n) at_check_stds=false;; - -s) at_verbose=false; at_silent=1;; - -v) at_verbose=:; at_silent=;; - -x) at_traceon='set -vx'; at_traceoff='set +vx'; at_check_stds=false;; - *) echo 1>&2 "Try \`$[0] --help' for more information."; exit 1 ;; - esac - shift -done - - -# To check whether a test succeeded or not, we compare an expected -# output with a reference. In the testing suite, we just need `cmp' -# but in debugging scripts, we want more information, so we prefer -# `diff -u'. Nonetheless we will use `diff' only, because in DOS -# environments, `diff' considers that two files are equal included -# when there are only differences on the coding of new lines. `cmp' -# does not. -# -# Finally, not all the `diff' support `-u', and some, like Tru64, even -# refuse to `diff' /dev/null. -: >empty - -if diff -u empty empty >/dev/null 2>&1; then - at_diff='diff -u' -else - at_diff='diff' -fi - - - -# Each generated debugging script, containing a single test group, cleans -# up files at the beginning only, not at the end. This is so we can repeat -# the script many times and browse left over files. To cope with such left -# over files, the full test suite cleans up both before and after test groups. -# Snippet )4 - -if $1 --version | grep "$at_package.*$at_version" >/dev/null; then - at_banner="Testing suite for $at_package, version $at_version" - at_dashes=`echo $at_banner | sed s/./=/g` - echo "$at_dashes" - echo "$at_banner" - echo "$at_dashes" -else - echo '=======================================================' - echo 'ERROR: Not using the proper version, no tests performed' - echo '=======================================================' - exit 1 -fi - -# Remove any debugging script resulting from a previous run. -rm -f debug-*.sh - -at_failed_list= -at_ignore_count=0 -divert(2)[]dnl - -# Wrap up the testing suite with summary statistics. - -rm -f at-check-line at-setup-line -at_fail_count=0 -if test -z "$at_failed_list"; then - if test "$at_ignore_count" = 0; then - at_banner="All $at_test_count tests were successful" - else - at_banner="All $at_test_count tests were successful ($at_ignore_count ignored)" - fi -else - echo - echo $at_n "Writing \`debug-NN.sh' scripts, NN =$at_c" - for at_group in $at_failed_list; do - echo $at_n " $at_group$at_c" - ( echo '#!/bin/sh' - sed -n '/^[#] Snippet (1/,/^[#] Snippet )1/p' atconfig - sed -n '/^[#] Snippet (2/,/^[#] Snippet )2/p' atconfig - sed -n "/^[#] Snippet (3/,/^[#] Snippet )3/p" $[0] - test -z "$at_silent" && echo 'at_verbose=:' - sed -n "/^[#] Snippet (4/,/^[#] Snippet )4/p" $[0] - sed -n "/^[#] Snippet (c$at_group(/,/^[#] Snippet )c$at_group)/p" $[0] - at_desc=`sed -n \ - '/^[#] Snippet (d'$at_group'(/,/^[#] Snippet )d'$at_group')/p' $[0] \ - | sed -n '2s/^[#] //p'` - echo 'if $at_verbose; then' - echo ' at_banner="$[0]: '$at_desc'"' - echo ' at_dashes=`echo $at_banner | sed s/./=/g`' - echo ' echo' - echo ' echo "$at_dashes"' - echo ' echo "$at_banner"' - echo ' echo "$at_dashes"' - echo 'fi' - echo - sed -n "/^[#] Snippet (d$at_group(/,/^[#] Snippet )d$at_group)/p" $[0] - sed -n "/^[#] Snippet (s$at_group(/,/^[#] Snippet )s$at_group)/p" $[0] - echo 'exit 0' - ) | grep -v '^[#] Snippet' > debug-$at_group.sh - chmod +x debug-$at_group.sh - at_fail_count=`expr $at_fail_count + 1` - done - echo ', done' - if $at_stop_on_error; then - at_banner='ERROR: One of the tests failed, inhibiting subsequent tests' - else - at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed" - fi -fi -at_dashes=`echo $at_banner | sed s/./=/g` -echo -echo "$at_dashes" -echo "$at_banner" -echo "$at_dashes" - -if test -n "$at_failed_list"; then - if test -z "$at_silent"; then - echo - echo 'When reporting failed tests to maintainers, do not merely list test' - echo 'numbers, as the numbering changes between releases and pretests.' - echo 'Be careful to give at least all the information you got about them.' - echo 'You may investigate any problem if you feel able to do so, in which' - echo 'case the generated debugging scripts provide good starting points.' - echo "Go on and modify them at will. \`./debug-NN --help' gives usage" - echo 'information. Now, failed tests will be executed again, verbosely.' - for at_group in $at_failed_list; do - ./debug-$at_group.sh - done - fi - exit 1 -fi - -exit 0 -divert[]dnl -])# AT_INIT - - - -# AT_SETUP(DESCRIPTION) -# --------------------- -# Start a group of related tests, all to be executed in the same subshell. -# The group is testing what DESCRIPTION says. -AT_DEFINE([AT_SETUP], -[AT_DEFINE([AT_ordinal], AT_EVAL(AT_ordinal + 1)) -pushdef([AT_group_description], [$1]) -pushdef([AT_data_files], ) -pushdef([AT_data_expout], ) -pushdef([AT_data_experr], ) -if $at_stop_on_error && test -n "$at_failed_list"; then :; else -divert(1)[]dnl - echo AT_LINE > at-check-line - echo AT_LINE > at-setup-line - if $at_verbose; then - echo 'testing AT_group_description' - echo $at_n " $at_c" - fi - if $at_verbose; then - echo "AT_ordinal. $srcdir/AT_LINE..." - else - echo $at_n "substr(AT_ordinal. $srcdir/AT_LINE , 0, 30)[]$at_c" - fi - if test -z "$at_skip_mode"; then - ( -[#] Snippet (d[]AT_ordinal[]( -[#] Testing AT_group_description -[#] Snippet )d[]AT_ordinal[]) -[#] Snippet (s[]AT_ordinal[]( -[#] starting from `AT_LINE'. -$at_traceon -]) - - -# AT_CLEANUP(FILES) -# ----------------- -# Complete a group of related tests, recursively remove those FILES -# created within the test. There is no need to list stdout, stderr, -# nor files created with AT_DATA. -AT_DEFINE([AT_CLEANUP], -$at_traceoff -[[#] Snippet )s[]AT_ordinal[]) - ) - at_status=$? - $at_verbose && - echo $at_n " AT_ordinal. $srcdir/`cat at-setup-line`: $at_c" - case $at_status in - 0) echo ok - ;; - 77) echo "ignored near \``cat at-check-line`'" - at_ignore_count=`expr $at_ignore_count + 1` - ;; - *) echo "FAILED near \``cat at-check-line`'" - at_failed_list="$at_failed_list AT_ordinal" - ;; - esac - else - echo 'ignored (skipped)' - at_ignore_count=`expr $at_ignore_count + 1` - fi - at_test_count=AT_ordinal - if $at_stop_on_error && test -n "$at_failed_list"; then :; else -divert(0)[]dnl -[#] Snippet (c[]AT_ordinal[]( - -rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr -[#] Snippet )c[]AT_ordinal[]) -undivert(1)[]dnl - rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr - fi -fi -popdef([AT_data_experr]) -popdef([AT_data_expout]) -popdef([AT_data_files]) -popdef([AT_group_description])[]dnl -])# AT_CLEANUP - - -# AT_DATA(FILE, CONTENTS) -# ----------------------- -# Initialize an input data FILE with given CONTENTS, which should end with -# an end of line. -# This macro is not robust to active symbols in CONTENTS *on purpose*. -# If you don't want CONTENT to be evaluated, quote it twice. -AT_DEFINE([AT_DATA], -[AT_DEFINE([AT_data_files], AT_data_files[ ]$1) -cat >$1 <<'_ATEOF' -$2[]_ATEOF -]) - - -# AT_CHECK(COMMANDS, [STATUS], STDOUT, STDERR) -# -------------------------------------------- -# Execute a test by performing given shell COMMANDS. These commands -# should normally exit with STATUS, while producing expected STDOUT and -# STDERR contents. The special word `expout' for STDOUT means that file -# `expout' contents has been set to the expected stdout. The special word -# `experr' for STDERR means that file `experr' contents has been set to -# the expected stderr. -# STATUS is not checked if it is empty. -# STDOUT and STDERR can be the special value `ignore', in which case -# their content is not checked. -AT_DEFINE([AT_CHECK], -[$at_traceoff -$at_verbose && echo "$srcdir/AT_LINE: patsubst([$1], [\([\"`$]\)], \\\1)" -echo AT_LINE > at-check-line -$at_check_stds && exec 5>&1 6>&2 1>stdout 2>stderr -$at_traceon -$1 -ifelse([$2], [], [], -[at_status=$? -if test $at_status != $2; then - $at_verbose && echo "Exit code was $at_status, expected $2" >&6 -dnl Maybe there was an important message to read before it died. - $at_verbose && $at_check_stds && cat stderr >&6 -dnl Preserve exit code 77. - test $at_status = 77 && exit 77 - exit 1 -fi -])dnl -$at_traceoff -if $at_check_stds; then -dnl Restore stdout to fd1 and stderr to fd2. - exec 1>&5 2>&6 -dnl If not verbose, neutralize the output of diff. - $at_verbose || exec 1>/dev/null 2>/dev/null - at_failed=false; - AT_CASE([$4], - ignore, [$at_verbose && cat stderr;:], - experr, [AT_DEFINE([AT_data_experr], [ experr])dnl -$at_diff experr stderr || at_failed=:], - [], [$at_diff empty stderr || at_failed=:], - [echo $at_n "patsubst([$4], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stderr || at_failed=:]) - AT_CASE([$3], - ignore, [$at_verbose && cat stdout;:], - expout, [AT_DEFINE([AT_data_expout], [ expout])dnl -$at_diff expout stdout || at_failed=:], - [], [$at_diff empty stdout || at_failed=:], - [echo $at_n "patsubst([$3], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stdout || at_failed=:]) - if $at_failed; then - exit 1 - else - : - fi -fi -$at_traceon -])# AT_CHECK - - -divert(0)dnl diff --git a/tests/atlocal.in b/tests/atlocal.in new file mode 100644 index 00000000..9a6790af --- /dev/null +++ b/tests/atlocal.in @@ -0,0 +1,10 @@ +# @configure_input@ -*- shell-script -*- +# Configurable variable values for Bison test suite. +# Copyright 2000, 2001 Free Software Foundation, Inc. + +# We need a C compiler. +CC='@CC@' +CFLAGS='@CFLAGS@' + +# We need `config.h'. +CPPFLAGS="-I $top_builddir @CPPFLAGS@" diff --git a/tests/bison b/tests/bison new file mode 100755 index 00000000..86ecafa3 --- /dev/null +++ b/tests/bison @@ -0,0 +1,11 @@ +#! /bin/sh +# Wrapper around a non installed bison to make it work as an installed one. +. ./atconfig + +# We want to use the files shipped with Bison. +BISON_SIMPLE=$top_srcdir/src/bison.simple +export BISON_SIMPLE +BISON_HAIRY=$top_srcdir/src/bison.hairy +export BISON_HAIRY + +exec $top_builddir/src/bison ${1+"$@"} diff --git a/tests/calc.at b/tests/calc.at index 3fa7aa61..4107dcb0 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -1,11 +1,22 @@ -# -*- Autoconf -*- +# Checking the output filenames. -*- Autotest -*- +# Copyright 2000, 2001 Free Software Foundation, Inc. -cat <&1 >/dev/null | grep 'parse error' >&2], + [AT_CHECK([calc ./input 2>&1 >/dev/null | grep 'parse error' >&2], [1], [], [])])]) @@ -268,14 +280,18 @@ AT_DEFINE([_AT_CHECK_CALC], # [ERROR-LOCATION], [IF-YYERROR-VERBOSE]) # ------------------------------------------------------------ # Run `calc' on INPUT, and expect STDERR. -AT_DEFINE([_AT_CHECK_CALC_ERROR], -[AT_CHECK([echo "$2" | calc 2>&1 >/dev/null | grep 'parse error' >&2], 0, +m4_define([_AT_CHECK_CALC_ERROR], +[AT_DATA([[input]], +[[$2 +]]) + +AT_CHECK([./calc &1 >/dev/null | grep 'parse error' >&2], 0, [], -[ifelse(regexp([$1], [--location]), - [-1], [], [$3: ])[]dnl +[m4_if(m4_regexp([$1], [--location]), + [-1], [], [$3: ])[]dnl parse error[]dnl -ifelse(regexp([$1], [--yyerror-verbose]), - [-1], [], [$4])[]dnl +m4_if(m4_regexp([$1], [--yyerror-verbose]), + [-1], [], [$4])[]dnl ])]) @@ -284,14 +300,14 @@ ifelse(regexp([$1], [--yyerror-verbose]), # -------------------------------------------------------- # Start a testing chunk which compiles `calc' grammar with # BISON-OPTIONS, and performs several tests over the parser. -AT_DEFINE([AT_CHECK_CALC], +m4_define([AT_CHECK_CALC], [# We use integers to avoid dependencies upon the precision of doubles. AT_SETUP([Calculator $1]) AT_DATA_CALC_Y([$1]) # Specify the output files to avoid problems on different file systems. -AT_CHECK([bison calc.y -o calc.c patsubst([$1], [--yyerror-verbose])], +AT_CHECK([bison calc.y -o calc.c m4_patsubst([$1], [--yyerror-verbose])], [0], [], []) AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], []) diff --git a/tests/output.at b/tests/output.at new file mode 100644 index 00000000..a2cf4509 --- /dev/null +++ b/tests/output.at @@ -0,0 +1,103 @@ +# Checking the output filenames. -*- Autotest -*- +# Copyright 2000, 2001 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AT_BANNER([[Output file names.]]) + + +# AT_CHECK_BISON_FLAGS(FLAGS, EXPECTED-FILES-SORTED) +# -------------------------------------------------- +m4_define([AT_CHECK_BISON_FLAGS], +[AT_SETUP([Output files: $1.]) +AT_DATA([foo.y], +[[%% +foo: {} +]]) +rm -rf $2 +AT_CHECK([bison -dv foo.y $1], 0, ignore, ignore) +AT_CHECK([ls $2 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$2]) +rm -f $2 +AT_CLEANUP +]) + +AT_CHECK_BISON_FLAGS([], [foo.output foo.tab.c foo.tab.h]) +AT_CHECK_BISON_FLAGS([-o foo.c], [foo.c foo.h foo.output]) +AT_CHECK_BISON_FLAGS([-o foo.tab.c], [foo.output foo.tab.c foo.tab.h]) +AT_CHECK_BISON_FLAGS([-y], [y.output y.tab.c y.tab.h]) +AT_CHECK_BISON_FLAGS([-b bar], [bar.output bar.tab.c bar.tab.h]) +AT_CHECK_BISON_FLAGS([-g -o foo.c], [foo.c foo.h foo.output foo.vcg]) + +# AT_CHECK_BISON_PERCENT(GRAMMAR-OPTIONS, EXPECTED-FILES-SORTED) +# -------------------------------------------------------------- +m4_define([AT_CHECK_BISON_PERCENT], +[AT_SETUP([Output files: $1.]) +AT_DATA([foo.y], +[[$1 +%defines +%verbose +%% +foo: {} +]]) +rm -rf $2 +AT_CHECK([bison foo.y], 0, ignore, ignore) +AT_CHECK([ls $2 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$2]) +rm -f $2 +AT_CLEANUP +]) + +# The sames, but using the % directives. +AT_CHECK_BISON_PERCENT([], [foo.output foo.tab.c foo.tab.h]) +# AT_CHECK_BISON_PERCENT([%output foo.c], [foo.c foo.h foo.output]) +# AT_CHECK_BISON_PERCENT([%output foo.tab.c], [foo.output foo.tab.c foo.tab.h]) +AT_CHECK_BISON_PERCENT([%yacc], [y.output y.tab.c y.tab.h]) +# AT_CHECK_BISON_PERCENT([%file_prefix bar], [bar.output bar.tab.c bar.tab.h]) + +# AT_CHECK_BISON_PERCENT_FLAGS(GRAMMAR_OPTIONS, FLAGS, EXPECTED-FILES-SORTED) +# --------------------------------------------------------------------------- +m4_define([AT_CHECK_BISON_PERCENT_FLAGS], +[AT_SETUP([Output files: $1.]) +AT_DATA([foo.yy], +[[$1 +%defines +%verbose +%% +foo: {} +]]) +rm -rf $3 +AT_CHECK([bison foo.yy $2], 0, ignore, ignore) +AT_CHECK([ls $3 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$3]) +rm -f $3 +AT_CLEANUP +]) + +# Check priorities of extension control. +AT_CHECK_BISON_PERCENT_FLAGS( +[], +[], +[foo.output foo.tab.cc foo.tab.hh]) +AT_CHECK_BISON_PERCENT_FLAGS( +[], +[-o foo.c], +[foo.c foo.h foo.output]) +AT_CHECK_BISON_PERCENT_FLAGS( +[%source_extension ".cpp"] [%header_extension ".hhh"], +[], +[foo.output foo.tab.cpp foo.tab.hhh]) +AT_CHECK_BISON_PERCENT_FLAGS( +[%source_extension ".cc"] [%header_extension ".hh"], +[-o foo.c], +[foo.c foo.h foo.output]) diff --git a/tests/regression.at b/tests/regression.at index 8a004831..e12e4fdd 100644 --- a/tests/regression.at +++ b/tests/regression.at @@ -1,11 +1,22 @@ -# -*- Autoconf -*- +# Bison Regressions. -*- Autotest -*- +# Copyright 2001 Free Software Foundation, Inc. -cat <