Optimize "make check" and "make check-maybe"

* lisp/emacs-lisp/ert.el (ert-run-tests-batch): Print summary duration.

* test/Makefile.in (TEST_LOAD_EL): Set default to "no" for
targets all, check, and check-maybe.  (Bug#30807)

* test/README: Reflect recent changes in Makefile.

* test/lisp/net/tramp-archive-tests.el
(tramp-archive-test99-libarchive-tests): Tag it :unstable.
This commit is contained in:
Michael Albinus 2018-03-16 16:19:10 +01:00
parent a402d9aacb
commit 2d0853f62a
4 changed files with 33 additions and 9 deletions

View file

@ -1383,7 +1383,15 @@ Returns the stats object."
(if (zerop skipped)
""
(format ", %s skipped" skipped))
(ert--format-time-iso8601 (ert--stats-end-time stats))
(if ert-batch-print-duration
(format
"%s, %f sec"
(ert--format-time-iso8601 (ert--stats-end-time stats))
(float-time
(time-subtract
(ert--stats-end-time stats)
(ert--stats-start-time stats))))
(ert--format-time-iso8601 (ert--stats-end-time stats)))
(if (zerop expected-failures)
""
(format "\n%s expected failures" expected-failures)))

View file

@ -97,7 +97,8 @@ TEST_LOCALE = C
# 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.
TEST_LOAD_EL ?= yes
export TEST_LOAD_EL ?= \
$(if $(findstring $(MAKECMDGOALS), all check check-maybe),no,yes)
# Additional settings for ert.
ert_opts =

View file

@ -11,12 +11,23 @@ Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info
"(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/
for more information on writing and running tests.
Tests could be tagged by the developer. In this test directory, the
following tags are recognised:
* :expensive-test
The test needs a serious amount of time to run. It is not intended
to run on a regular basis by users. Instead, it runs on demand
only, or during regression tests.
* :unstable
The test is under development. It shall run on demand only.
The Makefile in this directory supports the following targets:
* make check
Run all tests as defined in the directory. Expensive tests are
suppressed. The result of the tests for <filename>.el is stored in
<filename>.log.
Run all tests as defined in the directory. Expensive and unstable
tests are suppressed. The result of the tests for <filename>.el is
stored in <filename>.log.
* make check-maybe
Like "make check", but run only the tests for files which have
@ -25,6 +36,9 @@ The Makefile in this directory supports the following targets:
* make check-expensive
Like "make check", but run also the tests marked as expensive.
* make check-all
Like "make check", but run all tests.
* make <filename> or make <filename>.log
Run all tests declared in <filename>.el. This includes expensive
tests. In the former case the output is shown on the terminal, in
@ -38,15 +52,16 @@ https://www.gnu.org/software/emacs/manual/html_node/ert/Test-Selectors.html
You could use predefined selectors of the Makefile. "make <filename>
SELECTOR='$(SELECTOR_DEFAULT)'" runs all tests for <filename>.el
except the tests tagged as expensive.
except the tests tagged as expensive or unstable.
If your test file contains the tests "test-foo", "test2-foo" and
"test-foo-remote", and you want to run only the former two tests, you
could use a selector regexp: "make <filename> SELECTOR='\"foo$$\"'".
Note that although the test files are always compiled (unless they set
no-byte-compile), the source files will be run by default, to give
nicer backtraces. To run the compiled version of a test use
no-byte-compile), the source files will be run when expensive or
unstable tests are involved, to give nicer backtraces. To run the
compiled version of a test use
make TEST_LOAD_EL=no ...

View file

@ -873,7 +873,7 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(ert-deftest tramp-archive-test99-libarchive-tests ()
"Run tests of libarchive test files."
:tags '(:expensive-test)
:tags '(:expensive-test :unstable)
(skip-unless tramp-archive-enabled)
;; We do not want to run unless chosen explicitly. This test makes
;; sense only in my local environment. Michael Albinus.