mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
tests: refactor the bison invocations.
* tests/local.at (m4_null_if, AT_BISON_CHECK_): New.
This commit is contained in:
@@ -20,6 +20,15 @@
|
|||||||
m4_version_prereq([2.58])
|
m4_version_prereq([2.58])
|
||||||
|
|
||||||
|
|
||||||
|
# m4_null_if(VAL, IF-TRUE, IF-FALSE)
|
||||||
|
# ----------------------------------
|
||||||
|
# If VAL evaluates to empty or 0, run IF-TRUE, otherwise IF-FALSE.
|
||||||
|
m4_define([m4_null_if],
|
||||||
|
[m4_case(m4_quote($1),
|
||||||
|
[0], [$2],
|
||||||
|
[], [$2],
|
||||||
|
[$3])])
|
||||||
|
|
||||||
## ------------- ##
|
## ------------- ##
|
||||||
## Basic tests. ##
|
## Basic tests. ##
|
||||||
## ------------- ##
|
## ------------- ##
|
||||||
@@ -404,6 +413,9 @@ void
|
|||||||
|
|
||||||
# AT_BISON_CHECK(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
# AT_BISON_CHECK(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
|
# High-level routine that may call bison several times, under different
|
||||||
|
# conditions.
|
||||||
|
#
|
||||||
# Check Bison by invoking `bison BISON_ARGS'. BISON_ARGS should not contain
|
# Check Bison by invoking `bison BISON_ARGS'. BISON_ARGS should not contain
|
||||||
# shell constructs (such as redirection or pipes) that would prevent
|
# shell constructs (such as redirection or pipes) that would prevent
|
||||||
# appending additional command-line arguments for bison. OTHER_AT_CHECK_ARGS
|
# appending additional command-line arguments for bison. OTHER_AT_CHECK_ARGS
|
||||||
@@ -424,13 +436,20 @@ void
|
|||||||
#
|
#
|
||||||
# 4. If stderr contains a warning, -Wnone and --warnings=none suppress it.
|
# 4. If stderr contains a warning, -Wnone and --warnings=none suppress it.
|
||||||
m4_define([AT_BISON_CHECK],
|
m4_define([AT_BISON_CHECK],
|
||||||
[m4_if(m4_quote($2), [0], [AT_BISON_CHECK_XML($@)],
|
[m4_null_if([$2], [AT_BISON_CHECK_XML($@)])
|
||||||
m4_quote($2), [], [AT_BISON_CHECK_XML($@)])
|
|
||||||
AT_BISON_CHECK_NO_XML($@)])
|
AT_BISON_CHECK_NO_XML($@)])
|
||||||
|
|
||||||
m4_define([AT_BISON_WERROR_MSG],
|
m4_define([AT_BISON_WERROR_MSG],
|
||||||
[[bison: warnings being treated as errors]])
|
[[bison: warnings being treated as errors]])
|
||||||
|
|
||||||
|
|
||||||
|
# AT_BISON_CHECK_(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Low-level macro to run bison once.
|
||||||
|
m4_define([AT_BISON_CHECK_],
|
||||||
|
[AT_CHECK(AT_QUELL_VALGRIND[[ bison ]]$@)])
|
||||||
|
|
||||||
|
|
||||||
# AT_BISON_CHECK_NO_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
# 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
|
# Same as AT_BISON_CHECK except don't perform XML/XSLT checks. This is useful
|
||||||
@@ -451,8 +470,7 @@ m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
|||||||
]AT_DATA([expout], [$3])[
|
]AT_DATA([expout], [$3])[
|
||||||
|
|
||||||
# Run with -Werror.
|
# Run with -Werror.
|
||||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ -Werror]],
|
]AT_BISON_CHECK_([$1[ -Werror]], [[1]], [expout], [stderr])[
|
||||||
[[1]], [expout], [stderr])[
|
|
||||||
|
|
||||||
# Build expected stderr up to and including the "warnings being
|
# Build expected stderr up to and including the "warnings being
|
||||||
# treated as errors" message.
|
# treated as errors" message.
|
||||||
@@ -486,16 +504,13 @@ m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
|||||||
|
|
||||||
# Now check --warnings=error.
|
# Now check --warnings=error.
|
||||||
cp stderr experr
|
cp stderr experr
|
||||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ --warnings=error]],
|
]AT_BISON_CHECK_([$1[ --warnings=error]], [[1]], [expout], [experr])[
|
||||||
[[1]], [expout], [experr])[
|
|
||||||
|
|
||||||
# Now check -Wnone and --warnings=none by making sure that
|
# Now check -Wnone and --warnings=none by making sure that
|
||||||
# -Werror doesn't change the exit status when -Wnone or
|
# -Werror doesn't change the exit status when -Wnone or
|
||||||
# --warnings=none is specified.
|
# --warnings=none is specified.
|
||||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ -Wnone -Werror]],
|
]AT_BISON_CHECK_([$1[ -Wnone -Werror]], [[0]], [expout])[
|
||||||
[[0]], [expout])[
|
]AT_BISON_CHECK_([$1[ --warnings=none -Werror]], [[0]], [expout])[
|
||||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ --warnings=none \
|
|
||||||
-Werror]], [[0]], [expout])[
|
|
||||||
|
|
||||||
]AT_RESTORE_SPECIAL_FILES[
|
]AT_RESTORE_SPECIAL_FILES[
|
||||||
fi
|
fi
|
||||||
@@ -518,11 +533,11 @@ m4_define([AT_BISON_CHECK_XML],
|
|||||||
[--xml=[^][ ]*], [])])dnl
|
[--xml=[^][ ]*], [])])dnl
|
||||||
# Don't combine these Bison invocations since we want to be sure that
|
# Don't combine these Bison invocations since we want to be sure that
|
||||||
# --report=all isn't required to get the full XML file.
|
# --report=all isn't required to get the full XML file.
|
||||||
AT_CHECK([[bison --report=all --report-file=xml-tests/test.output \
|
AT_BISON_CHECK_([[--report=all --report-file=xml-tests/test.output \
|
||||||
--graph=xml-tests/test.dot ]]AT_BISON_ARGS,
|
--graph=xml-tests/test.dot ]]AT_BISON_ARGS,
|
||||||
[[0]], [ignore], [ignore])
|
[[0]], [ignore], [ignore])
|
||||||
AT_CHECK([[bison --xml=xml-tests/test.xml ]]AT_BISON_ARGS,
|
AT_BISON_CHECK_([[--xml=xml-tests/test.xml ]]AT_BISON_ARGS,
|
||||||
[[0]], [ignore], [ignore])
|
[[0]], [ignore], [ignore])
|
||||||
m4_popdef([AT_BISON_ARGS])dnl
|
m4_popdef([AT_BISON_ARGS])dnl
|
||||||
[cp xml-tests/test.output expout]
|
[cp xml-tests/test.output expout]
|
||||||
AT_CHECK([[$XSLTPROC \
|
AT_CHECK([[$XSLTPROC \
|
||||||
|
|||||||
Reference in New Issue
Block a user