[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/9] tests: refactor for legibility.
From: |
Akim Demaille |
Subject: |
[PATCH 3/9] tests: refactor for legibility. |
Date: |
Wed, 18 Jul 2012 11:02:25 +0200 |
* tests/local.at (AT_BISON_CHECK_WARNINGS, AT_BISON_CHECK_WARNINGS_):
New.
---
tests/local.at | 129 ++++++++++++++++++++++++++++++---------------------------
1 file changed, 69 insertions(+), 60 deletions(-)
diff --git a/tests/local.at b/tests/local.at
index 62e0570..f253280 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -450,72 +450,79 @@ m4_define([AT_BISON_CHECK_],
[AT_CHECK(AT_QUELL_VALGRIND[[ bison ]]$@)])
+# AT_BISON_CHECK_WARNINGS(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
+# ----------------------------------------------------------
+# Check that warnings (if some are expected) are correctly
+# turned into errors with -Werror, etc.
+m4_define([AT_BISON_CHECK_WARNINGS],
+[m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
+ [m4_null_if([$2], [AT_BISON_CHECK_WARNINGS_($@)])])])
+
+m4_define([AT_BISON_CHECK_WARNINGS_],
+[[# Defining POSIXLY_CORRECT causes bison to complain if options
+# are added after the grammar file name, so skip these checks
+# in that case.
+if test -z "${POSIXLY_CORRECT+set}"; then
+ ]AT_SAVE_SPECIAL_FILES[
+
+ # To avoid expanding it repeatedly, store specified stdout.
+ ]AT_DATA([expout], [$3])[
+
+ # Run with -Werror.
+ ]AT_BISON_CHECK_([$1[ -Werror]], [[1]], [expout], [stderr])[
+
+ # Build expected stderr up to and including the "warnings being
+ # treated as errors" message.
+ ]AT_DATA([[at-bison-check-warnings]], [$4])[
+ at_bison_check_first=`sed -n \
+ '/: warning: /{=;q;}' at-bison-check-warnings`
+ : ${at_bison_check_first:=1}
+ at_bison_check_first_tmp=`sed -n \
+ '/conflicts: [0-9].*reduce$/{=;q;}' at-bison-check-warnings`
+ : ${at_bison_check_first_tmp:=1}
+ if test $at_bison_check_first_tmp -lt $at_bison_check_first; then
+ at_bison_check_first=$at_bison_check_first_tmp
+ fi
+ if test $at_bison_check_first -gt 1; then
+ sed -n "1,`expr $at_bison_check_first - 1`"p \
+ at-bison-check-warnings > experr
+ fi
+ echo ']AT_BISON_WERROR_MSG[' >> experr
+
+ # Finish building expected stderr and check. Unlike warnings,
+ # complaints cause bison to exit early. Thus, with -Werror, bison
+ # does not necessarily report all warnings that it does without
+ # -Werror, but it at least reports one.
+ at_bison_check_last=`sed -n '$=' stderr`
+ : ${at_bison_check_last:=1}
+ at_bison_check_last=`expr $at_bison_check_last - 1`
+ sed -n "$at_bison_check_first,$at_bison_check_last"p \
+ at-bison-check-warnings >> experr
+ ]AT_CHECK([[sed 's,.*/\(]AT_BISON_WERROR_MSG[\)$,\1,' \
+ stderr 1>&2]], [[0]], [[]], [experr])[
+
+ # Now check --warnings=error.
+ cp stderr experr
+ ]AT_BISON_CHECK_([$1[ --warnings=error]], [[1]], [expout], [experr])[
+
+ # Now check -Wnone and --warnings=none by making sure that
+ # -Werror doesn't change the exit status when -Wnone or
+ # --warnings=none is specified.
+ ]AT_BISON_CHECK_([$1[ -Wnone -Werror]], [[0]], [expout])[
+ ]AT_BISON_CHECK_([$1[ --warnings=none -Werror]], [[0]], [expout])[
+
+ ]AT_RESTORE_SPECIAL_FILES[
+fi]dnl
+])
+
# AT_BISON_CHECK_NO_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
# --------------------------------------------------------
# Same as AT_BISON_CHECK except don't perform XML/XSLT checks. This is useful
# when a tortured grammar's XML is known to be too large for xsltproc to
# handle.
m4_define([AT_BISON_CHECK_NO_XML],
-[AT_CHECK(m4_if(m4_quote($2), [0], [], m4_quote($2), [], [],
- [AT_QUELL_VALGRIND ])[[bison ]]$@)
-m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
- m4_quote(m4_if(m4_quote($2), [], [0], [$2])), [0], [[
- # Defining POSIXLY_CORRECT causes bison to complain if options
- # are added after the grammar file name, so skip these checks
- # in that case.
- if test -z "${POSIXLY_CORRECT+set}"; then
- ]AT_SAVE_SPECIAL_FILES[
-
- # To avoid expanding it repeatedly, store specified stdout.
- ]AT_DATA([expout], [$3])[
-
- # Run with -Werror.
- ]AT_BISON_CHECK_([$1[ -Werror]], [[1]], [expout], [stderr])[
-
- # Build expected stderr up to and including the "warnings being
- # treated as errors" message.
- ]AT_DATA([[at-bison-check-warnings]], [$4])[
- at_bison_check_first=`sed -n \
- '/: warning: /{=;q;}' at-bison-check-warnings`
- : ${at_bison_check_first:=1}
- at_bison_check_first_tmp=`sed -n \
- '/conflicts: [0-9].*reduce$/{=;q;}' at-bison-check-warnings`
- : ${at_bison_check_first_tmp:=1}
- if test $at_bison_check_first_tmp -lt $at_bison_check_first; then
- at_bison_check_first=$at_bison_check_first_tmp
- fi
- if test $at_bison_check_first -gt 1; then
- sed -n "1,`expr $at_bison_check_first - 1`"p \
- at-bison-check-warnings > experr
- fi
- echo ']AT_BISON_WERROR_MSG[' >> experr
-
- # Finish building expected stderr and check. Unlike warnings,
- # complaints cause bison to exit early. Thus, with -Werror, bison
- # does not necessarily report all warnings that it does without
- # -Werror, but it at least reports one.
- at_bison_check_last=`sed -n '$=' stderr`
- : ${at_bison_check_last:=1}
- at_bison_check_last=`expr $at_bison_check_last - 1`
- sed -n "$at_bison_check_first,$at_bison_check_last"p \
- at-bison-check-warnings >> experr
- ]AT_CHECK([[sed 's,.*/\(]AT_BISON_WERROR_MSG[\)$,\1,' \
- stderr 1>&2]], [[0]], [[]], [experr])[
-
- # Now check --warnings=error.
- cp stderr experr
- ]AT_BISON_CHECK_([$1[ --warnings=error]], [[1]], [expout], [experr])[
-
- # Now check -Wnone and --warnings=none by making sure that
- # -Werror doesn't change the exit status when -Wnone or
- # --warnings=none is specified.
- ]AT_BISON_CHECK_([$1[ -Wnone -Werror]], [[0]], [expout])[
- ]AT_BISON_CHECK_([$1[ --warnings=none -Werror]], [[0]], [expout])[
-
- ]AT_RESTORE_SPECIAL_FILES[
- fi
- ]])
-])
+[AT_CHECK(m4_null_if([$2], [], [AT_QUELL_VALGRIND ])[[bison ]]$@)
+AT_BISON_CHECK_WARNINGS($@)])
# AT_BISON_CHECK_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
# -----------------------------------------------------
@@ -565,6 +572,8 @@ m4_define([AT_BISON_CHECK_XML],
m4_define([AT_QUELL_VALGRIND],
[[[VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no";
export VALGRIND_OPTS;]]])
+
+
## ------------------------ ##
## Compiling C, C++ Files. ##
## ------------------------ ##
--
1.7.11.2
- [PATCH 0/9] {maint} maint: improve test suite, Akim Demaille, 2012/07/18
- [PATCH 5/9] tests: be sure that backups are safe., Akim Demaille, 2012/07/18
- [PATCH 7/9] doc: fix Texinfo command, Akim Demaille, 2012/07/18
- [PATCH 9/9] tests: adjust to case where the C compiler is actually a C++ compiler, Akim Demaille, 2012/07/18
- [PATCH 4/9] maint: dead comment., Akim Demaille, 2012/07/18
- [PATCH 8/9] tests: fix dependencies, Akim Demaille, 2012/07/18
- [PATCH 6/9] maint: Valgrind on OS X., Akim Demaille, 2012/07/18
- [PATCH 1/9] maint: fix syntax-check ignore patterns., Akim Demaille, 2012/07/18
- [PATCH 2/9] tests: refactor the bison invocations., Akim Demaille, 2012/07/18
- [PATCH 3/9] tests: refactor for legibility.,
Akim Demaille <=