diff top/maint.mk @ 13185:8845faccc61b

maint.mk: add a PATH crosschecking syntax-check rule * top/maint.mk (sc_cross_check_PATH_usage_in_tests): New rule. Useful if you use a test like the one in help-version (coreutils, diffutils, grep, gzip) that ensures $(VERSION) matches what is printed by prog --version.
author Jim Meyering <meyering@redhat.com>
date Wed, 07 Apr 2010 13:45:59 +0200
parents 5f4b249b16d0
children ba35e9647b3b
line wrap: on
line diff
--- a/top/maint.mk	Wed Apr 07 00:26:31 2010 +0200
+++ b/top/maint.mk	Wed Apr 07 13:45:59 2010 +0200
@@ -849,6 +849,26 @@
 	halt='out of date copyright in $(texi); update it'		\
 	  $(_sc_search_regexp)
 
+# If tests/help-version exists and seems to be new enough, assume that its
+# use of init.sh and path_prepend_ is correct, and ensure that every other
+# use of init.sh is identical.
+# This is useful because help-version cross-checks prog --version
+# with $(VERSION), which verifies that its path_prepend_ invocation
+# sets PATH correctly.  This is an inexpensive way to ensure that
+# the other init.sh-using tests also get it right.
+_hv_file ?= $(srcdir)/tests/help-version
+_hv_regex ?= ^ *\. [^ ]*/init\.sh
+sc_cross_check_PATH_usage_in_tests:
+	@if grep -l 'VERSION mismatch' $(_hv_file) >/dev/null		\
+	    && grep -lE '$(_hv_regex)' $(_hv_file) >/dev/null; then	\
+	  good=$$(grep -E '$(_hv_regex)' < $(_hv_file));		\
+	  grep -LFx "$$good"						\
+		$$(grep -lE '$(_hv_regex)' $$($(VC_LIST_EXCEPT)))	\
+	      | grep . &&						\
+	    { echo "$(ME): the above files use path_prepend_ inconsistently" \
+		1>&2; exit 1; } || :;					\
+	fi
+
 # #if HAVE_... will evaluate to false for any non numeric string.
 # That would be flagged by using -Wundef, however gnulib currently
 # tests many undefined macros, and so we can't enable that option.