From 6617622c9aaa6ec3a9de5b0867421e2849b68b2f Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 8 Dec 2008 10:26:38 +0100 Subject: [PATCH] Fix portability issue in the test suite. * tests/local.at (AT_MATCHES_CHECK): New. Based on Perl instead of Sed. Sed has too many portability pitfalls, not ever Sed is GNU Sed. * tests/actions.at (Fix user actions without a trailing semicolon): Use it. --- ChangeLog | 9 +++++++++ tests/actions.at | 21 ++++++--------------- tests/local.at | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58ff6d87..719437ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-12-08 Akim Demaille + + Fix portability issue in the test suite. + * tests/local.at (AT_MATCHES_CHECK): New. + Based on Perl instead of Sed. Sed has too many portability + pitfalls, not ever Sed is GNU Sed. + * tests/actions.at (Fix user actions without a trailing semicolon): + Use it. + 2008-12-08 Akim Demaille Update data/README. diff --git a/tests/actions.at b/tests/actions.at index 32bfc34e..841ae392 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -1400,20 +1400,11 @@ input.y:35.1: warning: future versions of Bison will not add the `;' input.y:36.1: warning: a `;' might be needed at the end of action code input.y:36.1: warning: future versions of Bison will not add the `;' ]]) -AT_CHECK([[grep -c '/\* TEST:N:2 \*/ }$' input.c]], [0], [[3 -]]) -AT_CHECK([[grep -c '/\* TEST:Y:2 \*/ ;}$' input.c]], [0], [[6 -]]) -AT_CHECK([[sed -n '/TEST:N:1/{N -s/\n//gp}' input.c | grep -c '// TEST:N:1 [;{}]*}$']], [0], [[6 -]]) -AT_CHECK([[sed -n '/TEST:Y:1/{N -s/\n//gp}' input.c | grep -c '// TEST:Y:1 [;{}]*;}$']], [0], [[12 -]]) -AT_CHECK([[sed -n '/^#define TEST_MACRO_N/{N -N -s/\n//gp}' input.c | grep -F -xc '#define TEST_MACRO_N \[]"broken\" $ @ $$ @$ [];\string;"}']], - [0], [[2 -]]) + +AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]]) +AT_MATCHES_CHECK([input.c], [[/\* TEST:Y:2 \*/ ;\}$]], [[6]]) +AT_MATCHES_CHECK([input.c], [[// TEST:N:1 [;{}]*\n\}$]], [[6]]) +AT_MATCHES_CHECK([input.c], [[// TEST:Y:1 [;{}]*\n;\}$]], [[12]]) +AT_MATCHES_CHECK([input.c], [[#define TEST_MACRO_N \\\n\[\]"broken\\" \$ \@ \$\$ \@\$ \[\];\\\nstring;"\}]], [[2]]) AT_CLEANUP diff --git a/tests/local.at b/tests/local.at index 19f53cec..086ff757 100644 --- a/tests/local.at +++ b/tests/local.at @@ -20,6 +20,22 @@ m4_version_prereq([2.58]) +## ------------- ## +## Basic tests. ## +## ------------- ## + +# AT_MATCHES_CHECK(FILE, PERL-REGEXP, COUNT) +# ------------------------------------------ +# Expect COUNT matches of the PERL-REGEXP in FILE. The file is +# taken in "slurp" mode, i.e., one can match end-of-lines. +m4_define([AT_MATCHES_CHECK], +[AT_CHECK([perl -0777 -ne ' +my $count = 0; +s{$2}{ ++$count; "" }gem; +printf "$count\n";' $1], [0], [$3 +])]) + + ## ------------------------------- ## ## Macros decoding Bison options. ## ## ------------------------------- ## -- 2.45.2