bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: Autotest on 1.29


From: akim
Subject: FYI: Autotest on 1.29
Date: Thu, 30 Aug 2001 17:28:34 +0200
User-agent: Mutt/1.3.20i

This is the patch introducing an updated version of Autotest.
Contrary to what I first announced, and mostly because I'm a bit lazy
and have enough to fight with like that, I did not try to preserve
Autoconf 2.50 compatibility, not even 2.52: you *must* use CVS
Autoconf as of today.

As announced too, the test suite now exercises an installed bison in
addition to the non-yet-installed bison.

I hope you guys won't have too much trouble upgrading your local copy.
Sorry about these problems...

We are on the right track.  Next week's task will be, groumph, the
merge...

Oh, BTW, please *don't touch anything to the test suite now*, as I
will probably keep on working on it.  There are too many risks of
conflicts.

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * 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.

Index: configure.in
--- configure.in Wed, 15 Aug 2001 18:38:02 +0200 akim
+++ configure.in Thu, 30 Aug 2001 16:28:55 +0200 akim
@@ -1,12 +1,31 @@
-# Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.52)
-AC_INIT(bison, 1.28d, address@hidden)
+# 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.52c)
+
+AC_INIT([GNU Bison], [1.28d], address@hidden)
 AC_CONFIG_AUX_DIR(config)
-AM_INIT_AUTOMAKE(bison, 1.28d)
+
+AM_INIT_AUTOMAKE([bison], [1.28d])
 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 @@
            intl/Makefile po/Makefile.in
            lib/Makefile src/Makefile doc/Makefile
            m4/Makefile
-           tests/Makefile tests/atconfig])
+           tests/Makefile])
Index: m4/Makefile.am
--- m4/Makefile.am Wed, 15 Aug 2001 18:38:02 +0200 akim
+++ m4/Makefile.am Thu, 30 Aug 2001 16:31:42 +0200 akim
@@ -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                                       \
Index: tests/Makefile.am
--- tests/Makefile.am Wed, 15 Aug 2001 18:38:02 +0200 akim
+++ tests/Makefile.am Thu, 30 Aug 2001 17:13:14 +0200 akim
@@ -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
-
-testsuite: atgeneral.m4 suite.at $(SUITE)
-       $(M4) -I $(srcdir) atgeneral.m4 suite.at | \
-          sed -e 's/[  ]*$$//' | \
-         sed -e '/^$$/N;/\n$$/D' > address@hidden
-       chmod +x address@hidden
-       mv address@hidden $@
-
-CLEANFILES = debug-*.sh empty
-DISTCLEANFILES = atconfig
-MAINTAINERCLEANFILES = testsuite
+AUTOM4TE = autom4te
+AUTOTEST = $(AUTOM4TE) --language=autotest
+$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
+       $(AUTOTEST) -I $(srcdir) testsuite.at -o address@hidden
+       mv address@hidden $@
+
+atconfig: $(top_builddir)/config.status
+       cd $(top_builddir) && ./config.status tests/$@
+
+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
Index: tests/calc.at
--- tests/calc.at Wed, 15 Aug 2001 18:38:02 +0200 akim
+++ tests/calc.at Thu, 30 Aug 2001 17:09:07 +0200 akim
@@ -1,11 +1,22 @@
-#                                                        -*- Autoconf -*-
+# Checking the output filenames.                         -*- Autotest -*-
+# Copyright 2000, 2001 Free Software Foundation, Inc.

-cat <<EOF
-
-Simple Calculator.
-
-EOF
+# 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([[Simple Calculator.]])

 ## ---------------------------------------------------- ##
 ## Compile the grammar described in the documentation.  ##
@@ -23,11 +34,9 @@
 # some occurrences of `$1' etc. which will be interpreted by m4.  So
 # you should call it with $1, $2, and $3 as arguments, which is what
 # AT_DATA_CALC_Y does.
-AT_DEFINE([_AT_DATA_CALC_Y],
-[ifelse([$1$2$3],
-        $[1]$[2]$[3], [],
-        [errprint([$0: Invalid arguments: $@
-])m4exit(1)])dnl
+m4_define([_AT_DATA_CALC_Y],
+[m4_if([$1$2$3], $[1]$[2]$[3], [],
+       [m4_fatal([$0: Invalid arguments: address@hidden)])dnl
 AT_DATA([calc.y],
 [[/* Infix notation calculator--calc */

@@ -241,11 +250,11 @@ exp:
 # AT_DATA_CALC_Y([BISON-OPTIONS])
 # -------------------------------
 # Produce `calc.y'.
-AT_DEFINE([AT_DATA_CALC_Y],
+m4_define([AT_DATA_CALC_Y],
 [_AT_DATA_CALC_Y($[1], $[2], $[3],
-                 [ifelse(regexp([$1], [--yyerror-verbose]),
-                         [-1], [],
-                         [[#define YYERROR_VERBOSE]])])])
+                 [m4_if(m4_regexp([$1], [--yyerror-verbose]),
+                        [-1], [],
+                        [[#define YYERROR_VERBOSE]])])])



@@ -255,12 +264,15 @@ exp:
 # If `--debug' is passed to bison, discard all the debugging traces
 # preserving only the `parse errors'.  Note that since there should be
 # none, the `grep' will fail with exit status 1.
-AT_DEFINE([_AT_CHECK_CALC],
-[ifelse(regexp([$1], [--debug]),
+m4_define([_AT_CHECK_CALC],
+[AT_DATA([[input]],
+[[$2
+]])
+m4_if(m4_regexp([$1], [--debug]),
   [-1],
-     [AT_CHECK([echo "$2" | calc],
+     [AT_CHECK([./calc <input],
                [0], [], [])],
-     [AT_CHECK([echo "$2" | calc 2>&1 >/dev/null | grep 'parse error' >&2],
+     [AT_CHECK([calc ./input 2>&1 >/dev/null | grep 'parse error' >&2],
                [1], [], [])])])


@@ -268,14 +280,18 @@ exp:
 #                      [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 <input 2>&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 @@ exp:
 # --------------------------------------------------------
 # 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, [], [])

Index: tests/regression.at
--- tests/regression.at Fri, 19 Jan 2001 21:02:00 +0100 akim
+++ tests/regression.at Thu, 30 Aug 2001 16:21:03 +0200 akim
@@ -1,11 +1,22 @@
-#                                                        -*- Autoconf -*-
+# Bison Regressions.                               -*- Autotest -*-
+# Copyright 2001 Free Software Foundation, Inc.

-cat <<EOF
+# 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.

-Regression tests.
+# 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.

-EOF
+# 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([[Regression tests.]])

 ## ------------------ ##
 ## Duplicate string.  ##
Index: tests/atlocal.in
--- tests/atlocal.in Thu, 30 Aug 2001 17:19:42 +0200 akim
+++ tests/atlocal.in Thu, 30 Aug 2001 17:03:59 +0200 akim
@@ -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@"
Index: tests/bison
--- tests/bison Thu, 30 Aug 2001 17:19:42 +0200 akim
+++ tests/bison Thu, 30 Aug 2001 16:49:25 +0200 akim
@@ -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+"$@"}
Index: tests/output.at
--- tests/output.at Thu, 30 Aug 2001 17:19:42 +0200 akim
+++ tests/output.at Thu, 30 Aug 2001 16:42:55 +0200 akim
@@ -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])
Index: tests/testsuite.at
--- tests/testsuite.at Thu, 30 Aug 2001 17:19:42 +0200 akim
+++ tests/testsuite.at Thu, 30 Aug 2001 16:23:45 +0200 akim
@@ -0,0 +1,28 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU Bison.
+# 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.
+
+# We need a recent Autotest.
+m4_version_prereq([2.52c])
+
+AT_INIT([bison])
+
+m4_include([output.at])
+m4_include([calc.at])
+m4_include([regression.at])
Index: m4/atconfig.m4
--- m4/atconfig.m4 Sun, 17 Sep 2000 18:53:03 +0200 akim
+++ m4/atconfig.m4 Thu, 30 Aug 2001 17:19:42 +0200 akim
@@ -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
-])
Index: tests/atconfig.in
--- tests/atconfig.in Wed, 15 Aug 2001 18:38:02 +0200 akim
+++ tests/atconfig.in Thu, 30 Aug 2001 17:19:42 +0200 akim
@@ -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
-
address@hidden@
address@hidden@
-# 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
Index: tests/atgeneral.m4
--- tests/atgeneral.m4 Fri, 19 Jan 2001 21:02:00 +0100 akim
+++ tests/atgeneral.m4 Thu, 30 Aug 2001 17:19:42 +0200 akim
@@ -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
Index: tests/suite.at
--- tests/suite.at Thu, 30 Aug 2001 16:05:28 +0200 akim
+++ tests/suite.at Thu, 30 Aug 2001 17:19:42 +0200 akim
@@ -1,96 +0,0 @@
-#! /bin/sh
-# -*- Autoconf -*-
-# Validation suite for Bison.
-# Copyright 2000 Free Software Foundation, Inc.
-
-AT_INIT([bison])
-
-## ---------------------------- ##
-## Checking output file names.  ##
-## ---------------------------- ##
-
-# AT_CHECK_BISON_FLAGS(FLAGS, EXPECTED-FILES-SORTED)
-# --------------------------------------------------
-AT_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)
-# --------------------------------------------------------------
-AT_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)
-# ---------------------------------------------------------------------------
-AT_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])
-
-AT_INCLUDE([calc.at])
-AT_INCLUDE([regression.at])



reply via email to

[Prev in Thread] Current Thread [Next in Thread]