summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--syntax-checks.mk128
-rwxr-xr-xt/auxdir-autodetect.sh2
-rwxr-xr-xt/cond5.sh2
-rwxr-xr-xt/dist-formats.tap2
-rwxr-xr-xt/location.sh48
-rwxr-xr-xt/tap-signal.tap5
6 files changed, 74 insertions, 113 deletions
diff --git a/syntax-checks.mk b/syntax-checks.mk
index 130d4699d..bac6c7bba 100644
--- a/syntax-checks.mk
+++ b/syntax-checks.mk
@@ -38,6 +38,7 @@ ams := $(shell find $(srcdir) -name '*.dir' -prune -o -name '*.am' -print)
# Some simple checks, and then ordinary check. These are only really
# guaranteed to work on my machine.
syntax_check_rules = \
+$(sc_tests_plain_check_rules) \
sc_test_names \
sc_diff_automake_in_automake \
sc_diff_aclocal_in_automake \
@@ -56,22 +57,13 @@ sc_perl_local \
sc_AMDEP_TRUE_in_automake_in \
sc_tests_make_without_am_makeflags \
sc_tests_obsolete_variables \
-sc_tests_plain_make \
-sc_tests_plain_autoconf \
-sc_tests_plain_autoupdate \
-sc_tests_plain_automake \
-sc_tests_plain_autom4te \
-sc_tests_plain_autoheader \
-sc_tests_plain_autoreconf \
sc_tests_here_document_format \
sc_tests_Exit_not_exit \
sc_tests_automake_fails \
-sc_tests_plain_aclocal \
-sc_tests_plain_perl \
sc_tests_required_after_defs \
sc_tests_overriding_macros_on_cmdline \
sc_tests_plain_sleep \
-sc_tests_plain_egrep_fgrep \
+sc_m4_am_plain_egrep_fgrep \
sc_tests_no_configure_in \
sc_tests_PATH_SEPARATOR \
sc_tests_logs_duplicate_prefixes \
@@ -81,14 +73,6 @@ sc_unquoted_DESTDIR \
sc_tabs_in_texi \
sc_at_in_texi
-$(syntax_check_rules): automake aclocal
-maintainer-check: $(syntax_check_rules)
-.PHONY: maintainer-check $(syntax_check_rules)
-
-## Check that the list of tests given in the Makefile is equal to the
-## list of all test scripts in the Automake testsuite.
-maintainer-check: maintainer-check-list-of-tests
-
## Look for test whose names can cause spurious failures when used as
## first argument to AC_INIT (chiefly because they might contain an
## m4/m4sugar builtin or macro name).
@@ -311,53 +295,36 @@ sc_tests_obsolete_variables:
exit 1; \
else :; fi
-## Tests should never call make directly.
-sc_tests_plain_make:
- @if grep -v '^#' $(xtests) | $(EGREP) ':[ ]*make( |$$)'; then \
- echo 'Do not run "make" in the above tests. Use "$$MAKE" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call autoconf directly.
-sc_tests_plain_autoconf:
- @if grep -v '^#' $(xtests) | grep ':[ ]*autoconf\>'; then \
- echo 'Do not run "autoconf" in the above tests. Use "$$AUTOCONF" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call autoupdate directly.
-sc_tests_plain_autoupdate:
- @if grep -v '^#' $(xtests) | grep ':[ ]*autoupdate\>'; then \
- echo 'Do not run "autoupdate" in the above tests. Use "$$AUTOUPDATE" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call automake directly.
-sc_tests_plain_automake:
- @if grep -v '^#' $(xtests) | grep -E ':[ ]*automake\>([^:]|$$)'; then \
- echo 'Do not run "automake" in the above tests. Use "$$AUTOMAKE" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call autoheader directly.
-sc_tests_plain_autoheader:
- @if grep -v '^#' $(xtests) | grep ':[ ]*autoheader\>'; then \
- echo 'Do not run "autoheader" in the above tests. Use "$$AUTOHEADER" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call autoreconf directly.
-sc_tests_plain_autoreconf:
- @if grep -v '^#' $(xtests) | grep ':[ ]*autoreconf\>'; then \
- echo 'Do not run "autoreconf" in the above tests. Use "$$AUTORECONF" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call autom4te directly.
-sc_tests_plain_autom4te:
- @if grep -v '^#' $(xtests) | grep ':[ ]*autom4te\>'; then \
- echo 'Do not run "autom4te" in the above tests. Use "$$AUTOM4TE" instead.' 1>&2; \
- exit 1; \
+## Tests should never call some programs directly, but only through the
+## corresponding variable (e.g., '$MAKE', not 'make'). This will allow
+## the programs to be overridden at configure time (for less brittleness)
+## or by the user at make time (to allow better testsuite coverage).
+sc_tests_plain_check_rules = \
+ sc_tests_plain_egrep \
+ sc_tests_plain_fgrep \
+ sc_tests_plain_make \
+ sc_tests_plain_perl \
+ sc_tests_plain_automake \
+ sc_tests_plain_aclocal \
+ sc_tests_plain_autoconf \
+ sc_tests_plain_autoupdate \
+ sc_tests_plain_autom4te \
+ sc_tests_plain_autoheader \
+ sc_tests_plain_autoreconf
+
+toupper = $(shell echo $(1) | LC_ALL=C tr '[a-z]' '[A-Z]')
+
+$(sc_tests_plain_check_rules): sc_tests_plain_% :
+ @# The leading ':' in the grep below is what is printed by the
+ @# preceding 'grep -v' after the file name.
+ @# It works here as a poor man's substitute for beginning-of-line
+ @# marker.
+ @if grep -v '^[ ]*#' $(xtests) \
+ | $(EGREP) '(:|\bif|\bnot|[;!{\|\(]|&&|\|\|)[ ]*?$*\b'; \
+ then \
+ echo 'Do not run "$*" in the above tests.' \
+ 'Use "$$$(call toupper,$*)" instead.' 1>&2; \
+ exit 1; \
fi
## Tests should only use END and EOF for here documents
@@ -393,20 +360,6 @@ sc_tests_automake_fails:
exit 1; \
fi
-## Tests should never call aclocal directly.
-sc_tests_plain_aclocal:
- @if grep -v '^#' $(xtests) | grep ':[ ]*aclocal\>'; then \
- echo 'Do not run "aclocal" in the above tests. Use "$$ACLOCAL" instead.' 1>&2; \
- exit 1; \
- fi
-
-## Tests should never call perl directly.
-sc_tests_plain_perl:
- @if grep -v '^#' $(xtests) | grep ':[ ]*perl\>'; then \
- echo 'Do not run "perl" in the above tests. Use "$$PERL" instead.' 1>&2; \
- exit 1; \
- fi
-
## Setting 'required' after sourcing './defs' is a bug.
sc_tests_required_after_defs:
@for file in $(xtests); do \
@@ -468,13 +421,10 @@ sc_tests_plain_sleep:
fi
## fgrep and egrep are not required by POSIX.
-sc_tests_plain_egrep_fgrep:
- @if grep -E '\b[ef]grep\b' $(xtests) ; then \
- echo 'Do not use egrep or fgrep in test cases. Use $$FGREP or $$EGREP.' 1>&2; \
- exit 1; \
- fi
+sc_m4_am_plain_egrep_fgrep:
@if grep -E '\b[ef]grep\b' $(ams) $(srcdir)/m4/*.m4; then \
- echo 'Do not use egrep or fgrep in the above files, they are not portable.' 1>&2; \
+ echo 'Do not use egrep or fgrep in the above files,' \
+ 'they are not portable.' 1>&2; \
exit 1; \
fi
@@ -574,3 +524,11 @@ sc_at_in_texi:
echo 'Unescaped @.' 1>&2; \
exit 1; \
fi
+
+$(syntax_check_rules): automake aclocal
+maintainer-check: $(syntax_check_rules)
+.PHONY: maintainer-check $(syntax_check_rules)
+
+## Check that the list of tests given in the Makefile is equal to the
+## list of all test scripts in the Automake testsuite.
+maintainer-check: maintainer-check-list-of-tests
diff --git a/t/auxdir-autodetect.sh b/t/auxdir-autodetect.sh
index 790d1b152..41a73d5ae 100755
--- a/t/auxdir-autodetect.sh
+++ b/t/auxdir-autodetect.sh
@@ -121,7 +121,7 @@ grep '%%d[013]' out2 && Exit 1
rm -f ../../missing ../../install-sh
# --------------------------------------------------------- #
-: AC_CONFIG_AUX_DIR will not be found: automake must fail #
+: AC_CONFIG_AUX_DIR will not be found: Automake must fail #
# --------------------------------------------------------- #
AUTOMAKE_fails
diff --git a/t/cond5.sh b/t/cond5.sh
index dd45678e9..396130350 100755
--- a/t/cond5.sh
+++ b/t/cond5.sh
@@ -64,6 +64,6 @@ while test $try -le 30; do
fi
done
# The automake process probably hung. Kill it, and exit with failure.
-echo "$me: automake process $pid hung"
+echo "$me: Automake process $pid hung"
kill $pid
Exit 1
diff --git a/t/dist-formats.tap b/t/dist-formats.tap
index d627cf87b..26c6c97d7 100755
--- a/t/dist-formats.tap
+++ b/t/dist-formats.tap
@@ -168,7 +168,7 @@ can_compress ()
command_ok_if_have_compressor "'make dist-$format' work by default" \
eval '
rm -rf *$tarname* \
- && make dist-$format \
+ && $MAKE dist-$format \
&& test -f $tarname-1.0.$suffix \
&& ls -l *$tarname* \
&& test "`ls *$tarname*`" = $tarname-1.0.$suffix'
diff --git a/t/location.sh b/t/location.sh
index e496ca6b6..f9dd289ed 100755
--- a/t/location.sh
+++ b/t/location.sh
@@ -48,10 +48,10 @@ END
# Smash the useless difference of lib file locations.
smash_useless_diffs ()
{
- # FIXME: we could get rid of the second 's|||' once we improve our
+ # FIXME: we could get rid of the second 's,,,' once we improve our
# wrapper scripts ...
- sed -e "s|^$am_amdir/\\([a-z]*\.am\\)|\\1|" \
- -e "s|^automake-$APIVERSION:|automake:|" ${1+"$@"};
+ sed -e "s,^$am_amdir/\\([a-z]*\.am\\),\\1," \
+ -e "s,^automake-$APIVERSION:,automake:," ${1+"$@"};
}
$ACLOCAL
@@ -59,26 +59,28 @@ AUTOMAKE_fails -Wno-error
smash_useless_diffs stderr >observed
-cat >expected <<\EOF
-Makefile.am:12: warning: VAR multiply defined in condition TRUE ...
-Makefile.am:8: ... 'VAR' previously defined here
-automake: error: libfoo_a_OBJECTS should not be defined
-Makefile.am:3: while processing library 'libfoo.a'
-automake: error: use 'libfoo_a_LDADD', not 'libfoo_a_LIBADD'
-Makefile.am:3: while processing library 'libfoo.a'
-library.am: warning: deprecated feature: target 'libfoo.a' overrides 'libfoo.a$(EXEEXT)'
-library.am: change your target to read 'libfoo.a$(EXEEXT)'
-Makefile.am:3: while processing library 'libfoo.a'
-program.am: target 'libfoo.a$(EXEEXT)' was defined here
-Makefile.am:1: while processing program 'libfoo.a'
-program.am: warning: redefinition of 'libfoo.a$(EXEEXT)' ...
-Makefile.am:1: while processing program 'libfoo.a'
-library.am: ... 'libfoo.a' previously defined here
-Makefile.am:3: while processing library 'libfoo.a'
-tags.am: warning: redefinition of 'ctags' ...
-program.am: ... 'ctags$(EXEEXT)' previously defined here
-Makefile.am:6: while processing program 'ctags'
-EOF
+# Apparently useless use of sed here required to avoid spuriously
+# triggering some maintainer-checks failures.
+sed 's/^> //' > expected << 'END'
+> Makefile.am:12: warning: VAR multiply defined in condition TRUE ...
+> Makefile.am:8: ... 'VAR' previously defined here
+> automake: error: libfoo_a_OBJECTS should not be defined
+> Makefile.am:3: while processing library 'libfoo.a'
+> automake: error: use 'libfoo_a_LDADD', not 'libfoo_a_LIBADD'
+> Makefile.am:3: while processing library 'libfoo.a'
+> library.am: warning: deprecated feature: target 'libfoo.a' overrides 'libfoo.a$(EXEEXT)'
+> library.am: change your target to read 'libfoo.a$(EXEEXT)'
+> Makefile.am:3: while processing library 'libfoo.a'
+> program.am: target 'libfoo.a$(EXEEXT)' was defined here
+> Makefile.am:1: while processing program 'libfoo.a'
+> program.am: warning: redefinition of 'libfoo.a$(EXEEXT)' ...
+> Makefile.am:1: while processing program 'libfoo.a'
+> library.am: ... 'libfoo.a' previously defined here
+> Makefile.am:3: while processing library 'libfoo.a'
+> tags.am: warning: redefinition of 'ctags' ...
+> program.am: ... 'ctags$(EXEEXT)' previously defined here
+> Makefile.am:6: while processing program 'ctags'
+END
cat expected
cat observed
diff --git a/t/tap-signal.tap b/t/tap-signal.tap
index ab1cd40ef..cf5c9454c 100755
--- a/t/tap-signal.tap
+++ b/t/tap-signal.tap
@@ -49,7 +49,7 @@ for sig in $all_signals; do
# to themselves consistently). The shebang is dummy here, as we prefer
# to rely on the definition of TEST_LOG_COMPILER instead.
unindent > signal-$sig.test <<END
- #! perl
+ #! /usr/bin/env perl
# We need autoflush to avoid losing output, which could cause spurious
# "no test plan seen" in the TAP driver.
BEGIN { $| = 1 }
@@ -95,7 +95,8 @@ signal_caught ()
wbound_re="($|[^a-zA-Z0-9_-])"
pfx_re="^ERROR: signal-$numeric\\.test"
case $am_tap_implementation in
- perl) rx="$pfx_re - terminated by signal $sig_re$";;
+ # Dummy escape to please maintainer-check.
+ per\l) rx="$pfx_re - terminated by signal $sig_re$";;
shell) rx="$pfx_re .*terminated by signal $sig_re$wbound_re";;
*) fatal_ "invalid \$am_tap_implementation '$am_tap_implementation'";;
esac