mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-21 06:55:39 +00:00
Further simplify test/Makefile, optionally load elc tests
* test/Makefile.in: Use make's error ignoring feature instead of suppressing test errors with shell. Compile test files in the main make invocation instead of a recursive 'make' call. Optionally load .elc test files if TEST_LOAD_EL is set to something other than 'yes'. Remove obsolete commentary.
This commit is contained in:
parent
7b4a0e2884
commit
94306c8b0d
@ -81,6 +81,10 @@ GDB =
|
||||
# supported everywhere.
|
||||
TEST_LOCALE = C
|
||||
|
||||
# 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
|
||||
|
||||
# The actual Emacs command run in the targets below.
|
||||
# Prevent any setting of EMACSLOADPATH in user environment causing problems.
|
||||
emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) \
|
||||
@ -91,26 +95,6 @@ emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) \
|
||||
|
||||
all: check
|
||||
|
||||
%.elc: %.el
|
||||
$(AM_V_ELC)$(emacs) -f batch-byte-compile $<
|
||||
|
||||
## Ignore any test errors so we can continue to test other files.
|
||||
## But compilation errors are always fatal.
|
||||
WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@
|
||||
|
||||
## I'd prefer to use -emacs -f ert-run-tests-batch-and-exit rather
|
||||
## than || true, since the former makes problems more obvious.
|
||||
## I'd also prefer to @-hide the grep part and not the
|
||||
## ert-run-tests-batch-and-exit part.
|
||||
##
|
||||
## We need to use $loadfile because:
|
||||
## i) -L :$srcdir -l basename does not work, because we have files whose
|
||||
## basename duplicates a file in lisp/ (eg eshell.el).
|
||||
## ii) Although -l basename will automatically load .el or .elc,
|
||||
## -l ./basename treats basename as a literal file (it would be nice
|
||||
## 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
|
||||
ifdef SELECTOR
|
||||
@ -127,16 +111,23 @@ 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.
|
||||
## Byte-compile all test files to test for errors.
|
||||
%.elc: %.el
|
||||
$(AM_V_ELC)$(emacs) -f batch-byte-compile $<
|
||||
|
||||
## Beware: it approximates 'no-byte-compile', so watch out for false-positives!
|
||||
%.log: %.el
|
||||
$(AM_V_at)grep '^;.*no-byte-compile: t' $< > /dev/null || ${MAKE} $<c
|
||||
## Save logs, and show logs for failed tests.
|
||||
WRITE_LOG = > $@ 2>&1 || { STAT=$$?; cat $@; exit $$STAT; }
|
||||
|
||||
ifeq ($(TEST_LOAD_EL), yes)
|
||||
testloadfile = $*.el
|
||||
else
|
||||
testloadfile = $*
|
||||
endif
|
||||
|
||||
## Ignore any test errors so we can continue to test other files.
|
||||
%.log: %.elc
|
||||
$(AM_V_at)${MKDIR_P} $(dir $@)
|
||||
$(AM_V_GEN)stat=OK ; \
|
||||
HOME=/nonexistent $(emacs) -l ert -l $< \
|
||||
-$(AM_V_GEN)HOME=/nonexistent $(emacs) -l ert -l $(testloadfile) \
|
||||
--eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG}
|
||||
|
||||
ifeq (@HAVE_MODULES@, yes)
|
||||
|
Loading…
Reference in New Issue
Block a user