[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FYI] {maint} maintcheck: consistency of list of test scripts
From: |
Stefano Lattarini |
Subject: |
[FYI] {maint} maintcheck: consistency of list of test scripts |
Date: |
Mon, 16 Jan 2012 10:13:36 +0100 |
This is basically a backport of commit 'v1.11-358-g7b6ab07'
and its follow-ups. The possibility of easily checking that
the list of test scripts listed in a Makefile equals that of
the tests on the filesystem has proved itself so useful that
it's worth taking the annoyance of backporting it to maint.
* CheckListOfTests.am: New file, backported from master (commit
'v1.11-1736-g083a75b') with minor adjustments.
(maintainer-check-list-of-tests): New target, check for consistency
between the list of tests defined in the including Makefile and the
list of tests on the filesystem.
(clean-maintcheck-testslist-tmp): New rule, to clean up temporary
files that might be left around by the rules associated with the
previous target.
(clean-local): Depend on it.
* lib/Automake/tests/Makefile.am: Include `CheckListOfTests.am'.
* tests/Makefile.am: Likewise.
* Makefile.am (maintainer-check-list-of-test): New target,
calling recursively into `tests/' and `lib/Automake/tests/',
using ...
(TEST_SUBDIRS): ... this new variable.
(maintainer-check): Added dependency from the new target
`maintainer-check-list-of-tests'.
---
CheckListOfTests.am | 62 ++++++++++++++++++++++++++++++++++++++++
Makefile.am | 20 +++++++++++++
lib/Automake/tests/Makefile.am | 5 ++-
tests/Makefile.am | 4 ++
4 files changed, 90 insertions(+), 1 deletions(-)
create mode 100644 CheckListOfTests.am
diff --git a/CheckListOfTests.am b/CheckListOfTests.am
new file mode 100644
index 0000000..0a48447
--- /dev/null
+++ b/CheckListOfTests.am
@@ -0,0 +1,62 @@
+## -*- Automake -*-
+##
+## Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+##
+
+## Temporary files used in the `check-list-of-tests' target.
+am__tmk = tests-in-makefile-list.tmp
+am__tfs = tests-on-filesystem-list.tmp
+am__tdf = diff-in-tests-lists.tmp
+
+## Check that the list of tests given in the Makefile is equal to the
+## list of all test scripts in the Automake testsuite.
+.PHONY: maintainer-check-list-of-tests
+maintainer-check-list-of-tests:
+## Prefer unified diffs over plain diffs, for readability.
+ @if diff -u /dev/null /dev/null >/dev/null 2>&1; then \
+ diff='diff -u'; \
+ else \
+ diff='diff'; \
+ fi; \
+## List of tests in Makefile.
+ lst='$(expected_list_of_tests)'; \
+ test -n "$$lst" || lst='$(TESTS)'; \
+ for t in $$lst; do \
+ echo "$$t"; \
+ done | sort >$(am__tmk); \
+## List of tests on filesystem. Be careful to cater for VPATH builds too.
+ for ext in $(TEST_EXTENSIONS); do \
+ ls *$$ext 2>/dev/null; \
+ if test $(srcdir) != $(builddir); then \
+ (cd $(srcdir) && ls *$$ext 2>/dev/null); \
+ fi; \
+ done | sort | uniq >$(am__tfs); \
+## Compare the two lists, complain if they differ.
+ if $$diff $(am__tmk) $(am__tfs) >$(am__tdf); then \
+ result=0; \
+ else \
+ echo '$@: list of tests in Makefile an on filesystem differ' >&2; \
+ echo "+ $$diff in-makefile on-filesystem" >&2; \
+ cat $(am__tdf) >&2; \
+ result=1; \
+ fi; \
+ rm -f $(am__tmk) $(am__tfs) $(am__tdf); \
+ exit $$result;
+
+.PHONY: clean-maintcheck-testslist-tmp
+clean-local: clean-maintcheck-testslist-tmp
+clean-maintcheck-testslist-tmp:
+ rm -f $(am__tmk) $(am__tfs) $(am__tdf)
diff --git a/Makefile.am b/Makefile.am
index 893baff..735cb00 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,6 +25,8 @@
## run aclocal and automake.
SUBDIRS = lib . doc m4 tests
+TEST_SUBDIRS = tests lib/Automake/tests
+
bin_SCRIPTS = automake aclocal
CLEANFILES = $(bin_SCRIPTS)
@@ -196,6 +198,24 @@ $(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.
+.PHONY: maintainer-check-list-of-tests
+maintainer-check-list-of-tests:
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ for subdir in $(TEST_SUBDIRS); do \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@) || eval $$failcom; \
+ done; \
+ test -z "$$fail"
+
+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).
diff --git a/lib/Automake/tests/Makefile.am b/lib/Automake/tests/Makefile.am
index c5e53d2..a537fd1 100644
--- a/lib/Automake/tests/Makefile.am
+++ b/lib/Automake/tests/Makefile.am
@@ -1,6 +1,7 @@
## Process this file with automake to create Makefile.in
-# Copyright (C) 2002, 2003, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2008, 2009, 2012 Free Software Foundation,
+# Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,3 +29,5 @@ Version.pl \
Wrap.pl
EXTRA_DIST = $(TESTS)
+
+include $(top_srcdir)/CheckListOfTests.am
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b6f9fb3..c2daff4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -127,6 +127,10 @@ EXTRA_DIST += distcheck-hook-m4.am
# Each test case depends on defs, aclocal, and automake.
check_SCRIPTS = defs aclocal-$(APIVERSION) automake-$(APIVERSION)
+## Checking the list of tests.
+include $(top_srcdir)/CheckListOfTests.am
+maintainer-check-list-of-tests: $(parallel_tests)
+
clean-local: clean-local-check
.PHONY: clean-local-check
clean-local-check:
--
1.7.7.3
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [FYI] {maint} maintcheck: consistency of list of test scripts,
Stefano Lattarini <=