1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-21 18:23:59 +00:00

; test/Makefile.in: Add TEST_INTERACTIVE option (Bug#31744).

* test/README: Note the new option.
This commit is contained in:
Noam Postavsky 2017-12-16 20:06:11 -05:00
parent 1aa906f10d
commit b6b793bd77
2 changed files with 33 additions and 6 deletions

View File

@ -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 ${SELECTOR_ACTUAL})"
else
TEST_RUN_ERT = --batch --eval "(ert-run-tests-batch-and-exit ${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.
TEST_LOAD_EL ?= yes
@ -120,6 +129,11 @@ 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 := $(srcdir)/data/emacs-module
.PHONY: all check
@ -128,7 +142,7 @@ all: check
SELECTOR_DEFAULT = (quote (not (or (tag :expensive-test) (tag :unstable))))
SELECTOR_EXPENSIVE = (quote (not (tag :unstable)))
SELECTOR_ALL = nil
SELECTOR_ALL = t
ifdef SELECTOR
SELECTOR_ACTUAL=$(SELECTOR)
else ifndef MAKECMDGOALS
@ -145,7 +159,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; }
@ -158,9 +172,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 :=
@ -260,8 +274,15 @@ 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 -f ert-summarize-tests-batch-and-exit ${LOGFILES}
@$(emacs) --batch -l ert -f ert-summarize-tests-batch-and-exit ${LOGFILES}
endif
.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean

View File

@ -50,6 +50,12 @@ nicer backtraces. To run the compiled version of a test use
make TEST_LOAD_EL=no ...
The tests are run in batch mode by default; sometimes it's useful to
get precisely the same environment but run in interactive mode for
debugging. To do that, use
make TEST_INTERACTIVE=yes ...
(Also, see etc/compilation.txt for compilation mode font lock tests.)