From 74baf5c966578c7891a3120e0eac7361301043bd Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Thu, 27 Aug 2009 03:52:53 -0400 Subject: [PATCH] tests: use perl for printing special sequences to files. And skip tests if perl is not available. This is better than playing tricks with shell portability. Suggested by Akim Demaille. * tests/input.at (Bad character literals): Use it here for omitting final newlines. (Bad escapes in literals): Use it here for special characters. (cherry picked from commit b70c7fb4e1db54e78d4f3d4a0f110a81118ffc60) --- ChangeLog | 10 ++++++++++ tests/input.at | 19 ++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80f58f21..73c1c3e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-08-27 Joel E. Denny + + tests: use perl for printing special sequences to files. + And skip tests if perl is not available. This is better than + playing tricks with shell portability. Suggested by Akim + Demaille. + * tests/input.at (Bad character literals): Use it here for + omitting final newlines. + (Bad escapes in literals): Use it here for special characters. + 2009-08-26 Joel E. Denny tests: show a use of %define lr.default-reductions "consistent" diff --git a/tests/input.at b/tests/input.at index e8289877..3c04d580 100644 --- a/tests/input.at +++ b/tests/input.at @@ -1160,10 +1160,8 @@ AT_CLEANUP # Bison used to accept character literals that were empty or contained # too many characters. -# FIXME: $ECHO_N and $ECHO_C are not very portable according to the -# Autoconf manual. Switch to AS_ECHO_N when Autoconf 2.64 is released? -# Even better, AT_DATA or some variant of AT_DATA may eventually permit -# a trailing newline. See the threads starting at +# FIXME: AT_DATA or some variant of AT_DATA may eventually permit +# the final newline to be omitted. See the threads starting at # . AT_SETUP([[Bad character literals]]) @@ -1173,7 +1171,7 @@ AT_DATA([empty.y], start: ''; start: ' ]]) -echo $ECHO_N "start: '$ECHO_C" >> empty.y +AT_CHECK([[perl -e "print 'start: \'';" >> empty.y || exit 77]]) AT_BISON_CHECK([empty.y], [1], [], [[empty.y:2.8-9: warning: empty character literal @@ -1188,7 +1186,7 @@ AT_DATA([two.y], start: 'ab'; start: 'ab ]]) -echo $ECHO_N "start: 'ab$ECHO_C" >> two.y +AT_CHECK([[perl -e "print 'start: \'ab';" >> two.y || exit 77]]) AT_BISON_CHECK([two.y], [1], [], [[two.y:2.8-11: warning: extra characters in character literal @@ -1203,7 +1201,7 @@ AT_DATA([three.y], start: 'abc'; start: 'abc ]]) -echo $ECHO_N "start: 'abc$ECHO_C" >> three.y +AT_CHECK([[perl -e "print 'start: \'abc';" >> three.y || exit 77]]) AT_BISON_CHECK([three.y], [1], [], [[three.y:2.8-12: warning: extra characters in character literal @@ -1228,13 +1226,12 @@ start: '\777' '\0' '\xfff' '\x0' '\ ' '\A'; ]]) -# It is not easy to create special characters, we can only trust tr. +# It is not easy to create special characters, we cannot even trust tr. # Beside we cannot even expect "echo '\0'" to output two characters # (well three with \n): at least Bash 3.2 converts the two-character # sequence "\0" into a single NUL character. -# -# Z for 0, O for 1. -echo 'start: "\T\F\Z\O" ;' | tr 'TFZO' '\011\014\0\1' >> input.y +AT_CHECK([[perl -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \ + || exit 77]]) AT_BISON_CHECK([input.y], [1], [], [[input.y:2.9-12: invalid number after \-escape: 777 -- 2.45.2