]> git.eshelyaron.com Git - emacs.git/commitdiff
Further simplify test/Makefile, optionally load elc tests
authorNoam Postavsky <npostavs@gmail.com>
Wed, 31 May 2017 03:31:18 +0000 (23:31 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Wed, 31 May 2017 11:43:54 +0000 (07:43 -0400)
* 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.

test/Makefile.in

index 8880ee21936165f557f8f028e87e3c823b64460c..0d1663a4cdd184dc038275f479d850419ced7382 100644 (file)
@@ -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)