summaryrefslogtreecommitdiff
path: root/CheckListOfTests.am
blob: 28cb79558e59be829ef303be38a0565aee5ec79c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
## -*- Automake -*-
##
## Copyright (C) 2011 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; \
## Determine which files are to be considered test scripts.
## Do not blindly look for `$(TEST_EXTENSIONS)', because the parallel
## testsuite driver provided by Automake allow entries in `$(TESTS)'
## not to be real files, but rather paramaters for the corresponding
## LOG_COMPILER (well, sort of).
	 set X $(checked_test_extensions); shift; \
	 if test $$# -eq 0; then \
	   set X $(TEST_EXTENSIONS); shift; \
	 fi; \
	 if test $$# -eq 0; then \
	   echo '$@: internal error: $$(checked_test_extensions) and' \
	        '$$(TEST_EXTENSIONS) are both undefined or empty' >&2; \
	   exit 255; \
	 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 $$*; 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)