From 20963917dd4c0591f2983bd6a94426361bd53fa5 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Wed, 22 May 2013 22:34:12 +0200 Subject: [PATCH] lint: warn against redirected 'run_make' invocations 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 --- syntax-checks.mk | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/syntax-checks.mk b/syntax-checks.mk index 3feb400..6fb1197 100644 --- a/syntax-checks.mk +++ b/syntax-checks.mk @@ -62,6 +62,7 @@ sc_tests_no_source_defs \ 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 \ @@ -339,6 +340,14 @@ sc_tests_no_source_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 \ -- 2.7.4