3 # Copyright (c) 2005 Junio C Hamano
6 -include ..
/config.mak.autogen
9 #GIT_TEST_OPTS = --verbose --debug
10 SHELL_PATH ?
= $(SHELL
)
11 PERL_PATH ?
= /usr
/bin
/perl
15 DEFAULT_TEST_TARGET ?
= test
16 TEST_LINT ?
= test-lint-duplicates test-lint-executable
19 SHELL_PATH_SQ
= $(subst ','\'',$(SHELL_PATH))
20 PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH
))
22 T
= $(sort $(wildcard t
[0-9][0-9][0-9][0-9]-*.sh
))
23 TSVN
= $(sort $(wildcard t91
[0-9][0-9]-*.sh
))
24 TGITWEB
= $(sort $(wildcard t95
[0-9][0-9]-*.sh
))
26 all: $(DEFAULT_TEST_TARGET
)
28 test: pre-clean
$(TEST_LINT
)
29 $(MAKE
) aggregate-results-and-cleanup
31 prove
: pre-clean
$(TEST_LINT
)
32 @echo
"*** prove ***"; GIT_CONFIG
=.git
/config
$(PROVE
) --exec
'$(SHELL_PATH_SQ)' $(GIT_PROVE_OPTS
) $(T
) :: $(GIT_TEST_OPTS
)
33 $(MAKE
) clean-except-prove-cache
36 @echo
"*** $@ ***"; GIT_CONFIG
=.git
/config
'$(SHELL_PATH_SQ)' $@
$(GIT_TEST_OPTS
)
41 clean-except-prove-cache
:
42 $(RM
) -r
'trash directory'.
* test-results
45 clean: clean-except-prove-cache
48 test-lint
: test-lint-duplicates test-lint-executable test-lint-shell-syntax
51 @dups
=`echo $(T) | tr ' ' '\n' | sed 's/-.*//' | sort | uniq -d` && \
52 test -z
"$$dups" ||
{ \
53 echo
>&2 "duplicate test numbers:" $$dups; exit
1; }
56 @bad
=`for i in $(T); do test -x "$$i" || echo $$i; done` && \
57 test -z
"$$bad" ||
{ \
58 echo
>&2 "non-executable tests:" $$bad; exit
1; }
60 test-lint-shell-syntax
:
61 @
'$(PERL_PATH_SQ)' check-non-portable-shell.pl
$(T
)
63 aggregate-results-and-cleanup
: $(T
)
64 $(MAKE
) aggregate-results
68 for f in test-results
/t
*-*.counts
; do \
70 done |
'$(SHELL_PATH_SQ)' .
/aggregate-results.sh
72 # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
74 $(MAKE
) $(TSVN
) GIT_SVN_NO_OPTIMIZE_COMMITS
=1 LC_ALL
=C
75 $(MAKE
) $(TSVN
) GIT_SVN_NO_OPTIMIZE_COMMITS
=0 LC_ALL
=en_US.UTF-8
81 $(MAKE
) GIT_TEST_OPTS
="$(GIT_TEST_OPTS) --valgrind"
86 .PHONY
: pre-clean
$(T
) aggregate-results
clean valgrind perf