summaryrefslogtreecommitdiff
path: root/test/Makefile.in
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2018-06-18 12:14:24 -0700
committerGlenn Morris <rgm@gnu.org>2018-06-18 12:14:24 -0700
commitef02c9fd1a6bdafebc2bba58a551ec11e29bd394 (patch)
tree6d449f44290ca3506af22e8851118b39028c9c7c /test/Makefile.in
parente347754df7b8ec6a6e5d1f1a7749f5a19746d55f (diff)
parent5bdc344780faabbc91b7e55306b2071dffb44fa2 (diff)
downloademacs-ef02c9fd1a6bdafebc2bba58a551ec11e29bd394.tar.gz
Merge from origin/emacs-26
5bdc344 ; Reduce quoting for SELECTOR in 'make -C test' (Bug#31744) b6b793b ; test/Makefile.in: Add TEST_INTERACTIVE option (Bug#31744). 1aa906f Make 'tags' targets respect --with-silent-rules (Bug#31744) Conflicts: test/Makefile.in test/README
Diffstat (limited to 'test/Makefile.in')
-rw-r--r--test/Makefile.in37
1 files changed, 29 insertions, 8 deletions
diff --git a/test/Makefile.in b/test/Makefile.in
index bf1f9f39b71..0bc893bc0c6 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -81,7 +81,7 @@ EMACS_EXTRAOPT=
# Command line flags for Emacs.
# Apparently MSYS bash would convert "-L :" to "-L ;" anyway,
# but we might as well be explicit.
-EMACSOPT = -batch --no-site-file --no-site-lisp -L "$(SEPCHAR)$(srcdir)" $(EMACS_EXTRAOPT)
+EMACSOPT = --no-init-file --no-site-file --no-site-lisp -L "$(SEPCHAR)$(srcdir)" $(EMACS_EXTRAOPT)
# Prevent any settings in the user environment causing problems.
unexport EMACSDATA EMACSDOC EMACSPATH GREP_OPTIONS
@@ -94,6 +94,15 @@ GDB =
# supported everywhere.
TEST_LOCALE = C
+# Set this to 'yes' to run the tests in an interactive instance.
+TEST_INTERACTIVE ?= no
+
+ifeq ($(TEST_INTERACTIVE),yes)
+TEST_RUN_ERT = --eval '(ert (quote ${SELECTOR_ACTUAL}))'
+else
+TEST_RUN_ERT = --batch --eval '(ert-run-tests-batch-and-exit (quote ${SELECTOR_ACTUAL}))' ${WRITE_LOG}
+endif
+
# Whether to run tests from .el files in preference to .elc, we do
# this by default since it gives nicer stacktraces.
# If you just want a pass/fail, setting this to no is much faster.
@@ -123,15 +132,20 @@ emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) \
EMACS_TEST_DIRECTORY=$(abspath $(srcdir)) \
$(GDB) "$(EMACS)" $(MODULES_EMACSOPT) $(EMACSOPT)
+# Set HOME to a nonexistent directory to prevent tests from accessing
+# it accidentally (e.g., popping up a gnupg dialog if ~/.authinfo.gpg
+# exists, or writing to ~/.bzr.log when running bzr commands).
+TEST_HOME = /nonexistent
+
test_module_dir := data/emacs-module
.PHONY: all check
all: check
-SELECTOR_DEFAULT = (quote (not (or (tag :expensive-test) (tag :unstable))))
-SELECTOR_EXPENSIVE = (quote (not (tag :unstable)))
-SELECTOR_ALL = nil
+SELECTOR_DEFAULT = (not (or (tag :expensive-test) (tag :unstable)))
+SELECTOR_EXPENSIVE = (not (tag :unstable))
+SELECTOR_ALL = t
ifdef SELECTOR
SELECTOR_ACTUAL=$(SELECTOR)
else ifndef MAKECMDGOALS
@@ -148,7 +162,7 @@ endif
## Byte-compile all test files to test for errors.
%.elc: %.el
- $(AM_V_ELC)$(emacs) -f batch-byte-compile $<
+ $(AM_V_ELC)$(emacs) --batch -f batch-byte-compile $<
## Save logs, and show logs for failed tests.
WRITE_LOG = > $@ 2>&1 || { STAT=$$?; cat $@; exit $$STAT; }
@@ -166,9 +180,9 @@ endif
%.log: %.elc
$(AM_V_at)${MKDIR_P} $(dir $@)
- $(AM_V_GEN)HOME=/nonexistent $(emacs) \
+ $(AM_V_GEN)HOME=$(TEST_HOME) $(emacs) \
-l ert ${ert_opts} -l $(testloadfile) \
- --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG}
+ $(TEST_RUN_ERT)
ifeq (@HAVE_MODULES@, yes)
maybe_exclude_module_tests :=
@@ -276,9 +290,16 @@ check-maybe: check-no-automated-subdir
## We can't put LOGFILES as prerequisites, because that would stop the
## summarizing step from running when there is an error.
check-doit:
+ifeq ($(TEST_INTERACTIVE), yes)
+ HOME=$(TEST_HOME) $(emacs) \
+ -l ert ${ert_opts} \
+ $(patsubst %,-l %,$(if $(findstring $(TEST_LOAD_EL),yes),$ELFILES,$(ELFILES:.el=))) \
+ $(TEST_RUN_ERT)
+else
-@${MAKE} -k ${LOGFILES}
- @$(emacs) -l ert --eval \
+ @$(emacs) --batch -l ert --eval \
"(ert-summarize-tests-batch-and-exit ${SUMMARIZE_TESTS})" ${LOGFILES}
+endif
.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean