From: John Wiegley Date: Tue, 19 Jan 2016 06:56:33 +0000 (-0800) Subject: - X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/6acd2aa02c6f0eb9d3fadce0bb48183837beafd8 - --- 6acd2aa02c6f0eb9d3fadce0bb48183837beafd8 diff --cc test/Makefile.in index e8b1431954,2534a65a9a..9f7011353c --- a/test/Makefile.in +++ b/test/Makefile.in @@@ -87,10 -87,16 +87,16 @@@ WRITE_LOG = > $@ 2>&1 || { stat=ERROR; ## 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! - SELECTOR_DEFAULT=(quote (not (tag :expensive-test))) - SELECTOR_EXPENSIVE=nil - SELECTOR= + SELECTOR_DEFAULT = (quote (not (tag :expensive-test))) + SELECTOR_EXPENSIVE = nil + ifndef SELECTOR + SELECTOR_ACTUAL=$(SELECTOR_DEFAULT) + else + SELECTOR_ACTUAL=$(SELECTOR) + endif + + -%.log: ${srcdir}/%.el +%.log: %.el @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \ loadfile=$<; \ else \ @@@ -99,18 -105,12 +105,18 @@@ fi; \ echo Testing $$loadfile; \ stat=OK ; \ + mkdir --parents $(dir $@) ; \ $(emacs) -l ert -l $$loadfile \ - --eval "(ert-run-tests-batch-and-exit ${SELECTOR})" ${WRITE_LOG} + --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG} -ELFILES = $(sort $(wildcard ${srcdir}/*.el)) -LOGFILES = $(patsubst %.el,%.log,$(notdir ${ELFILES})) -TESTS = ${LOGFILES:.log=} +ELFILES = $(shell find ${srcdir} -path "${srcdir}/manual" -prune -o \ + -path "*resources" -prune -o -name "*el" -print) +## .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 ## see what the problem was. @@@ -131,39 -127,35 +137,41 @@@ ende $(foreach test,${TESTS},$(eval $(call test_template,${test}))) +## Include dependencies between test files and the files they test. +## We do this without the file and eval directly, but then we would +## have to run Emacs for every make invocation, and it might not be +## available during clean. +-include make-test-deps.mk - ## Rerun default tests. - check: - @${MAKE} check-doit SELECTOR="${SELECTOR_DEFAULT}" + ## Rerun all default tests. + check: mostlyclean + @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}" - ## Rerun also expensive tests. + ## Rerun all default and expensive tests. .PHONY: check-expensive - check-expensive: + check-expensive: mostlyclean @${MAKE} check-doit SELECTOR="${SELECTOR_EXPENSIVE}" - ## Re-run all the tests every time. - .PHONY: check-doit - check-doit: - -@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. + ## Only re-run default tests whose .log is older than the test. .PHONY: check-maybe - check-maybe: ${LOGFILES} + check-maybe: + @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}" + + ## Run the tests. + .PHONY: check-doit + check-doit: ${LOGFILES} $(emacs) -l ert -f ert-summarize-tests-batch-and-exit $^ .PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean - clean mostlyclean: + mostlyclean: + -@for f in *.log; do test ! -f $$f || mv $$f $$f~; done + + clean: - -rm -f *.log *.log~ + -rm -f ${LOGFILES} ${LOGSAVEFILES} + -rm make-test-deps.mk bootstrap-clean: clean - -rm -f ${srcdir}/*.elc + -rm -f ${ELCFILES} distclean: clean rm -f Makefile