tests: post-process stderr to normalize quotes.

* tests/bison.in: Save bison's stderr, and convert gettextized
	quotes to plain ASCII.
This commit is contained in:
Akim Demaille
2012-02-21 15:28:46 +01:00
parent a6b2f4fc02
commit 4c4d35394d

View File

@@ -20,17 +20,29 @@
abs_top_srcdir='@abs_top_srcdir@' abs_top_srcdir='@abs_top_srcdir@'
abs_top_builddir='@abs_top_builddir@' abs_top_builddir='@abs_top_builddir@'
: ${PERL=perl}
# Use the shipped files, not those installed. # Use the shipped files, not those installed.
BISON_PKGDATADIR=$abs_top_srcdir/data BISON_PKGDATADIR=$abs_top_srcdir/data
export BISON_PKGDATADIR export BISON_PKGDATADIR
$PREBISON "$abs_top_builddir/src/bison" ${1+"$@"}
trap 'rm -f /tmp/bison.$$.*; exit $status' 0 1 2 13 15
$PREBISON "$abs_top_builddir/src/bison" ${1+"$@"} 2>/tmp/bison.$$.err
status=$? status=$?
# Protect from gettextized quotes. See quotearg.c's gettext_quote for
# the UTF-8 sequences. For context, see
# http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html
#
# In UTF-8 the quoting quote are not ', so bison use them to quote the
# ' character. When using ASCII quotes, bison issues "'".
$PERL -p \
-e "s{\\xe2\\x80\\x98|\\xe2\\x80\\x99|\\xa1\\ae|\\xa1\\xaf}{'}g;" \
-e "s{'''}{\"'\"}g;" \
/tmp/bison.$$.err >&2
# As a special dark magic, if we are actually using this wrapper to # As a special dark magic, if we are actually using this wrapper to
# compile Bison's src/parse-gram.y, post-process the synclines to # compile Bison's src/parse-gram.y, post-process the synclines to
# avoid dependencies on the user's set up (srcdir vs. builddir). # avoid dependencies on the user's set up (srcdir vs. builddir).
PERL=perl
for i for i
do do
case $i in case $i in
@@ -40,8 +52,8 @@ do
# post-processes the synclines on y.tab.c itself. Don't let it # post-processes the synclines on y.tab.c itself. Don't let it
# do it. Besides, it leaves "parse-gram.y" as the source, # do it. Besides, it leaves "parse-gram.y" as the source,
# dropping the src/ part. # dropping the src/ part.
perl -pi -e 's{"y\.tab\.}{"src/parse-gram.}g;' \ $PERL -pi -e 's{"y\.tab\.}{"src/parse-gram.}g;' \
-e 's{".*/(parse-gram\.y)"}{"src/$1"}g;' \ -e 's{".*/(parse-gram\.y)"}{"src/$1"}g;' \
y.tab.[ch] y.tab.[ch]
fi fi
;; ;;