X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/220613e089ec012ae4ab319637365132ce8dc306..1efb208032164d21d2feb8c62b445878d3f5141c:/test/Makefile.in diff --git a/test/Makefile.in b/test/Makefile.in index e651c6caf0..33e625fc99 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 @@ -91,6 +94,10 @@ SELECTOR_DEFAULT = (quote (not (tag :expensive-test))) SELECTOR_EXPENSIVE = nil 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) @@ -99,17 +106,20 @@ else SELECTOR_ACTUAL=$(SELECTOR_EXPENSIVE) endif +## Byte-compile all test files to test for errors (unless explicitly +## told not to), but then evaluate the un-byte-compiled files, because +## they give cleaner stacktraces. +## Beware: it approximates 'no-byte-compile', so watch out for false-positives! %.log: %.el - @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \ - loadfile=$<; \ - else \ - loadfile=$ /dev/null; then \ + ${MAKE} $$elc; \ fi; \ + loadfile=$<; \ 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} @@ -141,23 +151,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.