summaryrefslogtreecommitdiff
path: root/test/Makefile.in
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2017-05-30 23:31:18 -0400
committerNoam Postavsky <npostavs@gmail.com>2017-05-31 07:43:54 -0400
commit94306c8b0d61a53b19dcee18475ea8692b001f5d (patch)
tree33b806f50e88a57098139209f6113af4bf94c435 /test/Makefile.in
parent7b4a0e2884004f44f3bdebecbcdfb6b6dcf99fdd (diff)
downloademacs-94306c8b0d61a53b19dcee18475ea8692b001f5d.tar.gz
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.
Diffstat (limited to 'test/Makefile.in')
-rw-r--r--test/Makefile.in47
1 files changed, 19 insertions, 28 deletions
diff --git a/test/Makefile.in b/test/Makefile.in
index 8880ee21936..0d1663a4cdd 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -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 $<
+
+## 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
-## 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
+## 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)