Files
bison/tests/testsuite.at
Joel E. Denny bd9d212b13 * tests/testsuite.at (AT_CHECK): When checking if $1 starts with
`bison ', use m4_index instead of m4_substr since chopping up a string
containing M4-special characters causes problems here.

Fix a couple of bugs related to special characters in user-specified
file names, and make it easier for skeletons to compute output file
names with the same file name prefix as Bison-computed output file
names.
* data/glr.cc, data/push.c, data/yacc.c: In @output, use
b4_parser_file_name and b4_spec_defines_file instead of
@output_parser_name@ and @output_header_name@, which are now redundant.
* data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
b4_parser_file_name, b4_spec_defines_file, and the new
@basename(FILENAME@) instead of @output_parser_name@ and
@output_header_name@, which inappropriately escaped the file names as
C string literals.
* src/files.c (all_but_ext): Remove static qualifier.
(compute_output_file_names): Move `free (all_but_ext)' to...
(output_file_names_free): ... here since all_but_ext is needed later.
* src/files.h (all_but_ext): Extern.
* src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
exactly what MUSCLE_INSERT_STRING used to do.
(MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
characters are escaped properly.
* src/output.c (prepare): Define muscle file_name_all_but_ext as
all_but_ext.
For pkgdatadir muscle, maintain previous functionality by using
MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
is that b4_pkgdatadir is used inside m4_include in the skeletons, so
digraphs would never be expanded.  Hopefully no one has M4-special
characters in his Bison installation path.
* src/scan-skel.l: Don't parse @output_header_name@ and
@output_parser_name@ anymore since they're now redundant.
In @output, use decode_at_digraphs.
Parse a new @basename command that invokes last_component.
(decode_at_digraphs): New.
(BASE_QPUTS): Remove unused.
* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
(Output file name): New tests.
2006-12-12 06:47:39 +00:00

79 lines
2.2 KiB
Plaintext

# Test suite for GNU Bison. -*- Autotest -*-
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# Bison often leaks memory when its exit status is non-zero, so set
# --leak-check=summary for Valgrind in that case.
m4_pushdef([ORIGINAL_AT_CHECK], m4_defn([AT_CHECK]))
m4_pushdef([AT_CHECK],
[ORIGINAL_AT_CHECK(
m4_if(m4_index(m4_quote($1), [bison ]), 0,
m4_if(m4_quote($2), [0], [], m4_quote($2), [], [],
[[VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; ]]))$@)])
# Testing resistance to user bugs.
m4_include([input.at])
# Testing output file names.
m4_include([output.at])
# Testing the part of the engine that computes FOLLOW etc.
m4_include([sets.at])
# Testing grammar reduction.
m4_include([reduce.at])
# Testing that #lines are correct.
m4_include([synclines.at])
# Testing that headers are sane.
m4_include([headers.at])
# Testing that user actions are properly performed.
m4_include([actions.at])
# Testing conflicts detection and resolution.
m4_include([conflicts.at])
# Fulling testing (compilation and execution of the parser) on calc.
m4_include([calc.at])
# Huge artificial grammars.
# Torturing the stack expansion at runtime.
m4_include([torture.at])
# Checking big, real world grammars.
m4_include([existing.at])
# Some old bugs.
m4_include([regression.at])
# Some C++ specific tests.
m4_include([c++.at])
# GLR tests:
# C++ types, simplified
m4_include([cxx-type.at])
# Regression tests
m4_include([glr-regression.at])
m4_popdef([AT_CHECK])
m4_popdef([ORIGINAL_AT_CHECK])