From 3a526f5cc3b45fc68d06de0b5332105113741093 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 8 Nov 2012 19:34:29 +0100 Subject: [PATCH] tests: don't expect $EGREP to support -w Does not work on Solaris 10. Reported by Dennis Clarke. http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00009.html * tests/headers.at (Several parsers): Use Perl instead. While at it, run it only once, on all the generated headers. Adjust to YY_NULL be defined in position.hh. --- THANKS | 1 + tests/headers.at | 45 ++++++++++++++++++++++++++++++--------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/THANKS b/THANKS index 77d35be7..4e88e8f3 100644 --- a/THANKS +++ b/THANKS @@ -31,6 +31,7 @@ Dagobert Michelsen dam@baltic-online.de Daniel Hagerty hag@gnu.org David J. MacKenzie djm@gnu.org David Kastrup dak@gnu.org +Dennis Clarke dclarke@blastwave.org Derek M. Jones derek@knosof.co.uk Di-an Jan dianj@freeshell.org Dick Streefland dick.streefland@altium.nl diff --git a/tests/headers.at b/tests/headers.at index a60e3153..7df4cc9d 100644 --- a/tests/headers.at +++ b/tests/headers.at @@ -163,21 +163,6 @@ exp: AT_BISON_CHECK([-d -o AT_SKEL_CC_IF([$1.cc $1.yy], [$1.c $1.y])]) -# Check there is no 'yy' left. -# C++ output relies on namespaces and still uses yy a lot. -AT_SKEL_CC_IF([], - [AT_CHECK([$EGREP yy $1.h], [1])]) - -# Check there is not 'YY' left. -# Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)? -# (constant definition), YY_\w+_INCLUDED (header guards). -# -# YYDEBUG (not renamed) can be read, but not changed. -AT_CHECK([[sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \ - -e '/YY/p' ]$1.AT_SKEL_CC_IF([hh], [h])[ | - $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?|_[0-9A-Z_]+_INCLUDED)|(defined|if) YYDEBUG']], - [1]) - AT_LANG_COMPILE([$1.o]) AT_CHECK([[echo "$1" >>expout]]) @@ -240,6 +225,36 @@ AT_TEST([x7], [%define api.push-pull both]) AT_TEST([x8], [%define api.pure %define api.push-pull both]) #AT_TEST([x5], [%locations %language "c++" %glr-parser]) +# Check there is no 'yy' left. +# C++ output relies on namespaces and still uses yy a lot. +# +# Check there is no 'YY' left. +# Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)? +# (constant definition), YY_\w+_INCLUDED (header guards). +# +# YYDEBUG (not renamed) can be read, but not changed. +AT_CHECK([[$PERL -n -0777 -e ' + s{/\*.*?\*/}{}gs; + s{//.*}{}g; + s{\b(YYPARSE_PARAM + |YYPUSH_MORE(_DEFINED)? + |YY_\w+_INCLUDED + |YY_NULL + |(defined|if)\ YYDEBUG + )\b}{}gx; + while (/^(.*YY.*)$/gm) + { + print "$ARGV: $1\n"; + } + if ($ARGV =~ /\.h$/) + { + while (/^(.*yy.*)$/gm) + { + print "$ARGV: $1\n"; + } + } +' -- *.hh *.h]]) + # Check that the headers are self-contained, and protected against # multiple inclusions. While at it, check they are sane for C++. for h in *.h *.hh -- 2.45.2