]> Sergey Matveev's repositories - zsh-autoenv.git/blobdiff - Makefile
_autoenv_hash_pair: do not use a subshell (#81)
[zsh-autoenv.git] / Makefile
index b16479587364877314ce59c0ed9be4916101c9a6..b9ea8967e0604381b3a755e4dc36f09f08cd0767 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,41 @@
-.PHONY: itest test
+# Default, can be overridden using "make test ZDOTDIR=...".
+ZDOTDIR:=${CURDIR}/tests/ZDOTDIR
 
-itest:
-       ZDOTDIR="${PWD}/tests" cram -i --shell=zsh tests
+# Export it, and make it absolute.
+override export ZDOTDIR:=$(abspath $(ZDOTDIR))
+
+TEST_SHELL:=zsh
 
 test:
-       ZDOTDIR="${PWD}/tests" cram --shell=zsh tests
+       cram --shell=$(TEST_SHELL) -v tests
+
+itest:
+       cram -i --shell=$(TEST_SHELL) tests
+
+# Run tests with all ZDOTDIRs.
+test_full:
+       for zsh in zsh /opt/zsh-4.3.9/bin/zsh; do \
+               command -v $$zsh || { echo "Skipping non-existing shell: $$zsh"; continue; }; \
+               ret=0; \
+               for i in $(wildcard tests/ZDOTDIR*); do \
+                       echo "zsh=$zsh ZDOTDIR=$$i"; \
+                       SHELL=$$zsh ZDOTDIR=${CURDIR}/$$i cram --shell=$$zsh -v tests || ret=$$?; \
+                       echo; \
+               done; \
+       done; \
+       exit $$ret
+
+# Define targets for test files, with relative and abolute path.
+# Use verbose output, which is useful with Vim's 'errorformat'.
+TESTS:=$(wildcard tests/*.t)
+
+uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
+_TESTS_REL_AND_ABS:=$(call uniq,$(abspath $(TESTS)) $(TESTS))
+$(_TESTS_REL_AND_ABS):
+       cram --shell=$(TEST_SHELL) -v $@
+.PHONY: $(_TESTS_REL_AND_ABS)
+
+.PHONY: itest test
 
-tests/*.t:
-       ZDOTDIR="${PWD}/tests" cram --shell=zsh $@
-.PHONY: tests/*.t
+clean:
+       $(RM) tests/*.err