From 2d0853f62ac65f974f25887f69506bfe923bf14b Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Fri, 16 Mar 2018 16:19:10 +0100 Subject: [PATCH] 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. --- lisp/emacs-lisp/ert.el | 10 +++++++++- test/Makefile.in | 3 ++- test/README | 27 +++++++++++++++++++++------ test/lisp/net/tramp-archive-tests.el | 2 +- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index 3beb8a070fc..a15450734ec 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -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))) diff --git a/test/Makefile.in b/test/Makefile.in index 0b6f8c2eecf..426d22d0632 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -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 = diff --git a/test/README b/test/README index 17135a02748..37156c632c1 100644 --- a/test/README +++ b/test/README @@ -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 .el is stored in - .log. + Run all tests as defined in the directory. Expensive and unstable + tests are suppressed. The result of the tests for .el is + stored in .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 or make .log Run all tests declared in .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 SELECTOR='$(SELECTOR_DEFAULT)'" runs all tests for .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 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 ... diff --git a/test/lisp/net/tramp-archive-tests.el b/test/lisp/net/tramp-archive-tests.el index a3201bdba4a..b327e64818b 100644 --- a/test/lisp/net/tramp-archive-tests.el +++ b/test/lisp/net/tramp-archive-tests.el @@ -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. -- 2.39.2