X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8986f1674c2338761a30bfe0b8ee353d0cd6778e..25cc0f2aada3e321e5f1c6d1e492a93d16da45b2:/test/Makefile.in diff --git a/test/Makefile.in b/test/Makefile.in index 0034f10459..7ebc0ded4e 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -21,7 +21,8 @@ ## Some targets: ## check: re-run all tests, writing to .log files. -## check-maybe: run all tests whose .log file needs updating +## check-maybe: run all tests which are outdated with their .log file +## or the source files they are testing. ## filename.log: run tests from filename.el(c) if .log file needs updating ## filename: re-run tests from filename.el(c), with no logging @@ -32,6 +33,8 @@ SHELL = @SHELL@ srcdir = @srcdir@ VPATH = $(srcdir) +MKDIR_P = @MKDIR_P@ + SEPCHAR = @SEPCHAR@ # We never change directory before running Emacs, so a relative file @@ -89,10 +92,18 @@ WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@ ## Beware: it approximates 'no-byte-compile', so watch out for false-positives! SELECTOR_DEFAULT = (quote (not (tag :expensive-test))) SELECTOR_EXPENSIVE = nil -ifndef SELECTOR +ifdef SELECTOR +SELECTOR_ACTUAL=$(SELECTOR) +else ifndef MAKECMDGOALS +SELECTOR_ACTUAL=$(SELECTOR_DEFAULT) +else ifeq ($(MAKECMDGOALS),all) +SELECTOR_ACTUAL=$(SELECTOR_DEFAULT) +else ifeq ($(MAKECMDGOALS),check) +SELECTOR_ACTUAL=$(SELECTOR_DEFAULT) +else ifeq ($(MAKECMDGOALS),check-maybe) SELECTOR_ACTUAL=$(SELECTOR_DEFAULT) else -SELECTOR_ACTUAL=$(SELECTOR) +SELECTOR_ACTUAL=$(SELECTOR_EXPENSIVE) endif @@ -105,7 +116,7 @@ endif fi; \ echo Testing $$loadfile; \ stat=OK ; \ - mkdir --parents $(dir $@) ; \ + ${MKDIR_P} $(dir $@) ; \ $(emacs) -l ert -l $$loadfile \ --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG} @@ -137,23 +148,34 @@ endef $(foreach test,${TESTS},$(eval $(call test_template,${test}))) +## Check that there is no 'automated' subdirectory, which would +## indicate an incomplete merge from an older version of Emacs where +## the tests were arranged differently. +.PHONY: check-no-automated-subdir +check-no-automated-subdir: + test ! -d $(srcdir)/automated + ## 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. +## We could 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 all default tests. -check: mostlyclean +check: mostlyclean check-no-automated-subdir @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}" ## Rerun all default and expensive tests. .PHONY: check-expensive -check-expensive: mostlyclean +check-expensive: mostlyclean check-no-automated-subdir @${MAKE} check-doit SELECTOR="${SELECTOR_EXPENSIVE}" -## Only re-run default tests whose .log is older than the test. +## Re-run all tests which are outdated. A test is outdated if its +## logfile is out-of-date with either the test file, or the source +## files that the tests depend on. The source file dependencies are +## determined by a heuristic and does not identify the full dependency +## graph. See make-test-deps.emacs-lisp for details. .PHONY: check-maybe -check-maybe: +check-maybe: check-no-automated-subdir @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}" ## Run the tests.