The testsuite shell function 'run_make()' has the three options
-E, -O and -M to perform the various kind of output redirections,
so the test scripts should use them instead of redirecting the
output "by hand":
run_make ARGS >stdout => run_make -O ARGS
run_make ARGS >stderr => run_make -E ARGS
run_make ARGS >stdout 2>stderr => run_make -O -E ARGS
run_make ARGS >output 2>&1 => run_make -M ARGS
See the commit message of v1.13.2-13-gc7cfa09, 2013-05-22
(tests: run_make: options to do command redirection) for an
explanation of why this is a good idea.
It's worth noting that the present patch only introduced a new
static maintainer check looking against the undesired idioms,
but doesn't yet remove usages of such idioms from the testsuite.
That will be done by follow-up patch(es).
* syntax-checks.mk (sc_tests_no_run_make_redirect): New check.
(syntax_check_rules): List it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
sc_tests_obsolete_variables \
sc_tests_here_document_format \
sc_tests_command_subst \
+sc_tests_no_run_make_redirect \
sc_tests_exit_not_Exit \
sc_tests_automake_fails \
sc_tests_required_after_defs \
exit 1; \
fi
+## Invocation of 'run_make' should not have output redirections.
+sc_tests_no_run_make_redirect:
+ @if grep -Pzo '.*\brun_make\b(.*(\\\n))*.*>.*' $(xtests); then \
+ echo 'Do not redirect "run_make" invocations, use' \
+ '"run_make {-E|-O|-M}" instead.' 1>&2; \
+ exit 1; \
+ fi
+
## Use AUTOMAKE_fails when appropriate
sc_tests_automake_fails:
@if grep -v '^#' $(xtests) | grep '\$$AUTOMAKE.*&&.*exit'; then \