From 6da65bde8c31a1c47070fcde1ff6a3676a51d20d Mon Sep 17 00:00:00 2001 From: Paul Pogonyshev Date: Sat, 28 Oct 2017 13:46:36 +0300 Subject: [PATCH] Add 'ert-quiet' variable * lisp/emacs-lisp/ert.el (ert-quiet): New variable. (ert-run-tests-batch): When 'ert-quiet' is non-nil, don't print non-important information. (Bug#29025) * doc/misc/ert.texi (Running Tests in Batch Mode): Document it. * etc/NEWS: Mention the new variable. --- doc/misc/ert.texi | 14 ++++++++++++++ etc/NEWS | 6 ++++++ lisp/emacs-lisp/ert.el | 33 +++++++++++++++++++-------------- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index 4a2c29dcb9f..2a17a211665 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -292,6 +292,20 @@ summary as shown below: emacs -batch -l ert -f ert-summarize-tests-batch-and-exit output.log @end example +@vindex ert-quiet +By default, ERT in batch mode is quite verbose, printing a line with +result after each test. This gives you progress information: how many +tests have been executed and how many there are. However, in some +cases this much output may be undesirable. In this case, set +@code{ert-quiet} variable to a non-nil value: + +@example +emacs -batch -l ert -l my-tests.el \ + --eval "(let ((ert-quiet t)) (ert-run-tests-batch-and-exit))" +@end example + +In quiet mode ERT prints only unexpected results and summary. + If ERT is not part of your Emacs distribution, you may need to use @code{-L /path/to/ert/} so that Emacs can find it. You may need additional @code{-L} flags to ensure that @code{my-tests.el} and all the diff --git a/etc/NEWS b/etc/NEWS index ec52460f776..9ae36bdb032 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -84,6 +84,12 @@ by default. ** Gamegrid +** ERT + ++++ +*** New variable 'ert-quiet' allows to make ERT output in batch mode +less verbose by removing non-essential information. + --- *** Gamegrid now determines its default glyph size based on display dimensions, instead of always using 16 pixels. As a result, Tetris, diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index 3a3979e81f0..1d69af80639 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -1333,6 +1333,9 @@ RESULT must be an `ert-test-result-with-condition'." ;;; Running tests in batch mode. +(defvar ert-quiet nil + "Non-nil makes ERT only print important information in batch mode.") + ;;;###autoload (defun ert-run-tests-batch (&optional selector) "Run the tests specified by SELECTOR, printing results to the terminal. @@ -1349,10 +1352,11 @@ Returns the stats object." (lambda (event-type &rest event-args) (cl-ecase event-type (run-started - (cl-destructuring-bind (stats) event-args - (message "Running %s tests (%s)" - (length (ert--stats-tests stats)) - (ert--format-time-iso8601 (ert--stats-start-time stats))))) + (unless ert-quiet + (cl-destructuring-bind (stats) event-args + (message "Running %s tests (%s)" + (length (ert--stats-tests stats)) + (ert--format-time-iso8601 (ert--stats-start-time stats)))))) (run-ended (cl-destructuring-bind (stats abortedp) event-args (let ((unexpected (ert-stats-completed-unexpected stats)) @@ -1438,16 +1442,17 @@ Returns the stats object." (ert-test-name test))) (ert-test-quit (message "Quit during %S" (ert-test-name test))))) - (let* ((max (prin1-to-string (length (ert--stats-tests stats)))) - (format-string (concat "%9s %" - (prin1-to-string (length max)) - "s/" max " %S"))) - (message format-string - (ert-string-for-test-result result - (ert-test-result-expected-p - test result)) - (1+ (ert--stats-test-pos stats test)) - (ert-test-name test))))))) + (unless ert-quiet + (let* ((max (prin1-to-string (length (ert--stats-tests stats)))) + (format-string (concat "%9s %" + (prin1-to-string (length max)) + "s/" max " %S"))) + (message format-string + (ert-string-for-test-result result + (ert-test-result-expected-p + test result)) + (1+ (ert--stats-test-pos stats test)) + (ert-test-name test)))))))) nil)) ;;;###autoload -- 2.39.2