Add subtree test Makefile

Add a Makefile to run subtree tests. This is largely copied from the standard test suite with irrelevant targets removed and some paths altered to account for where subtree tests live. Signed-off-by: David A. Greene <greened@obbligato.org>

David A. Greene committed Feb 5, 2012 at 16:29 UTC c3d884a68806d1b56f14b5ba1cfa3493aa7b277d
1 file changed +69
contrib/subtree/t/Makefile new
+69
@@ -0,0 +1,69 @@
1 +# Run tests
2 +#
3 +# Copyright (c) 2005 Junio C Hamano
4 +#
5 +
6 +-include ../../../config.mak.autogen
7 +-include ../../../config.mak
8 +
9 +#GIT_TEST_OPTS=--verbose --debug
10 +SHELL_PATH ?= $(SHELL)
11 +PERL_PATH ?= /usr/bin/perl
12 +TAR ?= $(TAR)
13 +RM ?= rm -f
14 +PROVE ?= prove
15 +DEFAULT_TEST_TARGET ?= test
16 +
17 +# Shell quote;
18 +SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
19 +
20 +T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
21 +
22 +all: $(DEFAULT_TEST_TARGET)
23 +
24 +test: pre-clean $(TEST_LINT)
25 + $(MAKE) aggregate-results-and-cleanup
26 +
27 +prove: pre-clean $(TEST_LINT)
28 + @echo "*** prove ***"; GIT_CONFIG=.git/config $(PROVE) --exec '$(SHELL_PATH_SQ)' $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS)
29 + $(MAKE) clean
30 +
31 +$(T):
32 + @echo "*** $@ ***"; GIT_CONFIG=.git/config '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS)
33 +
34 +pre-clean:
35 + $(RM) -r test-results
36 +
37 +clean:
38 + $(RM) -r 'trash directory'.* test-results
39 + $(RM) -r valgrind/bin
40 + $(RM) .prove
41 +
42 +test-lint: test-lint-duplicates test-lint-executable
43 +
44 +test-lint-duplicates:
45 + @dups=`echo $(T) | tr ' ' '\n' | sed 's/-.*//' | sort | uniq -d` && \
46 + test -z "$$dups" || { \
47 + echo >&2 "duplicate test numbers:" $$dups; exit 1; }
48 +
49 +test-lint-executable:
50 + @bad=`for i in $(T); do test -x "$$i" || echo $$i; done` && \
51 + test -z "$$bad" || { \
52 + echo >&2 "non-executable tests:" $$bad; exit 1; }
53 +
54 +aggregate-results-and-cleanup: $(T)
55 + $(MAKE) aggregate-results
56 + $(MAKE) clean
57 +
58 +aggregate-results:
59 + for f in ../../../t/test-results/t*-*.counts; do \
60 + echo "$$f"; \
61 + done | '$(SHELL_PATH_SQ)' ../../../t/aggregate-results.sh
62 +
63 +valgrind:
64 + $(MAKE) GIT_TEST_OPTS="$(GIT_TEST_OPTS) --valgrind"
65 +
66 +test-results:
67 + mkdir -p test-results
68 +
69 +.PHONY: pre-clean $(T) aggregate-results clean valgrind