commit 354a1fc38d6d4bf93db30c6e3048437dd3fbc19f (HEAD, refs/remotes/origin/master) Author: Phillip Lord Date: Wed Dec 2 21:28:56 2015 +0000 make check unconditional, check-maybe top-level. * Makefile.in: Add check-maybe target. * test/Makefile.in: Restore unconditional behaviour to make check. diff --git a/Makefile.in b/Makefile.in index 9ab1f76..06e5b06 100644 --- a/Makefile.in +++ b/Makefile.in @@ -921,6 +921,15 @@ extraclean: $(extraclean_dirs:=_extraclean) TAGS tags: lib lib-src src $(MAKE) -C src tags + +check-maybe: all + @if test ! -d test; then \ + echo "You do not seem to have the test/ directory."; \ + echo "Maybe you are using a release tarfile, rather than a repository checkout."; \ + else \ + $(MAKE) -C test check-maybe; \ + fi + check: all @if test ! -d test; then \ echo "You do not seem to have the test/ directory."; \ @@ -943,7 +952,7 @@ $(DOCS): $(MAKE) -C doc/$(subst -, ,$@) .PHONY: $(DOCS) docs pdf ps -.PHONY: info dvi dist check html info-real info-dir check-info +.PHONY: info dvi dist check check-maybe html info-real info-dir check-info ## TODO add etc/refcards. docs: $(DOCS) diff --git a/test/Makefile.in b/test/Makefile.in index 06a2fb9..1e76675 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -136,7 +136,7 @@ $(foreach test,${TESTS},$(eval $(call test_template,${test}))) ## Re-run all the tests every time. check: - -@for f in *.log; do test ! -f $$f || mv $$f $$f~; done + -@for f in $(LOGFILES); do test ! -f $$f || mv $$f $$f~; done @${MAKE} check-maybe ## Only re-run tests whose .log is older than the test. commit 5874cd46e9cd8b20c61190ad56055d73816c2303 Merge: 3ab2622 098738f Author: Phillip Lord Date: Wed Dec 2 12:05:09 2015 +0000 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs commit 3ab26227cf1ff7eda1847a6c1c581a0bb1031b4f Author: Phillip Lord Date: Tue Dec 1 23:23:12 2015 +0000 Tests now support out-of-source-build. * tests/Makefile.in,test/make-test-deps.emacs-lisp: Remove assumptions about current working directory. diff --git a/test/Makefile.in b/test/Makefile.in index b2360fb..06a2fb9 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -87,7 +87,7 @@ WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@ ## to change this; bug#17848 - if that gets done, this can be simplified). ## ## Beware: it approximates 'no-byte-compile', so watch out for false-positives! -%.log: ${srcdir}/%.el +%.log: %.el @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \ loadfile=$<; \ else \ @@ -96,14 +96,17 @@ WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@ fi; \ echo Testing $$loadfile; \ stat=OK ; \ + mkdir --parents $(dir $@) ; \ $(emacs) -l ert -l $$loadfile \ -f ert-run-tests-batch-and-exit ${WRITE_LOG} -ELFILES = $(shell find ${srcdir} -path "./manual" -prune -o \ +ELFILES = $(shell find ${srcdir} -path "${srcdir}/manual" -prune -o \ -path "*resources" -prune -o -name "*el" -print) -ELCFILES = $(patsubst %.el,%.elc,${ELFILES}) -LOGFILES = $(patsubst %.el,%.log,${ELFILES}) -LOGSAVEFILES = $(patsubst %.el,%.log~,${ELFILES}) +## .elc files may be in a different directory for out of source builds +ELCFILES = $(patsubst %.el,%.elc, \ + $(patsubst $(srcdir)%,.%,$(ELFILES))) +LOGFILES = $(patsubst %.elc,%.log,${ELCFILES}) +LOGSAVEFILES = $(patsubst %.elc,%.log~,${ELCFILES}) TESTS = $(subst ${srcdir}/,,$(LOGFILES:.log=)) ## If we have to interrupt a hanging test, preserve the log so we can @@ -117,8 +120,8 @@ TESTS = $(subst ${srcdir}/,,$(LOGFILES:.log=)) ## of use. define test_template $(1): - @test ! -f ${srcdir}/$(1).log || mv ${srcdir}/$(1).log ${srcdir}/$(1).log~ - @${MAKE} ${srcdir}/$(1).log WRITE_LOG= + @test ! -f ./$(1).log || mv ./$(1).log ./$(1).log~ + @${MAKE} ./$(1).log WRITE_LOG= $(notdir $(1)): $(1) endef @@ -156,7 +159,7 @@ distclean: clean maintainer-clean: distclean bootstrap-clean make-test-deps.mk: $(ELFILES) make-test-deps.emacs-lisp - $(EMACS) --batch -l make-test-deps.emacs-lisp \ - --eval "(make-test-deps \"`pwd`\")" \ + $(EMACS) --batch -l $(srcdir)/make-test-deps.emacs-lisp \ + --eval "(make-test-deps \"$(srcdir)\")" \ 2> $@ # Makefile ends here. diff --git a/test/make-test-deps.emacs-lisp b/test/make-test-deps.emacs-lisp index 563b3bf..7831da3 100644 --- a/test/make-test-deps.emacs-lisp +++ b/test/make-test-deps.emacs-lisp @@ -26,34 +26,43 @@ (require 'seq) -(defun make-test-deps (directory) - (message - "%s" - (concat - (make-test-deps-lisp directory) - (make-test-deps-src directory)))) - -(defun make-test-deps-lisp (directory) +(defun make-test-deps (src-dir) + (let ((src-dir (file-truename src-dir))) + (message + "%s" + (concat + (make-test-deps-lisp src-dir) + (make-test-deps-src src-dir))))) + +(defun make-test-deps-lisp (src-dir) (mapconcat - (lambda (stem) - (format "%s-tests.log: ../%s.elc\n" stem stem)) - (make-test-test-files directory "lisp") "")) - -(defun make-test-deps-src (directory) + (lambda (file-without-suffix) + (format "./%s-tests.log: %s/../%s.el\n" + file-without-suffix + src-dir + file-without-suffix)) + (make-test-test-files src-dir "lisp") "")) + +(defun make-test-deps-src (src-dir) (mapconcat - (lambda (stem) - (format "%s-tests.log: ../%s.o\n" stem stem)) - (make-test-test-files directory "src") "")) - -(defun make-test-test-files (stem dir) + (lambda (file-without-suffix) + (format "./%s-tests.log: %s/../%s.c\n" + file-without-suffix + src-dir + file-without-suffix)) + (make-test-test-files src-dir "src") "")) + +(defun make-test-test-files (src-dir sub-src-dir) (make-test-munge-files - stem - (directory-files-recursively dir ".*-tests.el$"))) + src-dir + (directory-files-recursively + (concat src-dir "/" sub-src-dir) + ".*-tests.el$"))) -(defun make-test-munge-files (stem files) +(defun make-test-munge-files (src-dir files) (make-test-sans-suffix (make-test-de-stem - stem + src-dir (make-test-no-legacy (make-test-no-test-dir (make-test-no-resources