emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/cider 599ceb5841: `cider-test`: add timing information (#3


From: ELPA Syncer
Subject: [nongnu] elpa/cider 599ceb5841: `cider-test`: add timing information (#3373)
Date: Fri, 21 Jul 2023 07:00:02 -0400 (EDT)

branch: elpa/cider
commit 599ceb5841ffb621a3c8035433ad61d0e67e73b4
Author: vemv <vemv@users.noreply.github.com>
Commit: GitHub <noreply@github.com>

    `cider-test`: add timing information (#3373)
    
    See also: https://github.com/clojure-emacs/cider-nrepl/issues/755
---
 CHANGELOG.md  |  1 +
 cider-test.el | 48 ++++++++++++++++++++++++++++++++++--------------
 cider.el      |  2 +-
 3 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f4969d6b5a..a638bb62c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
 
 - [#3352](https://github.com/clojure-emacs/cider/pull/3352) Add CIDER Log 
Mode, a major mode that allows you to capture, debug, inspect and view log 
events emitted by Java logging frameworks.
 - [#3354](https://github.com/clojure-emacs/cider/issues/3354): Add new 
customization variable `cider-reuse-dead-repls` to control how dead REPL 
buffers are reused on new connections.
+- `cider-test`: add timing information.
 
 ### Bugs fixed
 
diff --git a/cider-test.el b/cider-test.el
index 50ff75f27f..3436077ab0 100644
--- a/cider-test.el
+++ b/cider-test.el
@@ -374,11 +374,14 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
   (let ((face (cider-test-type-face type)))
     `(:foreground ,(face-attribute face :background))))
 
-(defun cider-test-render-summary (buffer summary)
+(defun cider-test-render-summary (buffer summary &optional elapsed-time)
   "Emit into BUFFER the report SUMMARY statistics."
   (with-current-buffer buffer
     (nrepl-dbind-response summary (ns var test pass fail error)
-      (insert (format "Tested %d namespaces\n" ns))
+      (let ((ms (nrepl-dict-get elapsed-time "ms")))
+        (insert (format "Tested %d namespaces%s\n" ns (if ms
+                                                          (format " in %s ms" 
ms)
+                                                        ""))))
       (insert (format "Ran %d assertions, in %d test functions\n" test var))
       (unless (zerop fail)
         (cider-insert (format "%d failures" fail) 'cider-test-failure-face t))
@@ -391,7 +394,7 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
 (defun cider-test-render-assertion (buffer test)
   "Emit into BUFFER report detail for the TEST assertion."
   (with-current-buffer buffer
-    (nrepl-dbind-response test (var context type message expected actual diffs 
error gen-input)
+    (nrepl-dbind-response test (var context type message expected actual diffs 
error gen-input elapsed-time)
       (cl-flet ((insert-label (s)
                   (cider-insert (format "%8s: " s) 'font-lock-comment-face))
                 (insert-align-label (s)
@@ -410,6 +413,9 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
                 (bg `(:background ,cider-test-items-background-color :extend 
t)))
             (cider-insert (capitalize type) type-face nil " in ")
             (cider-insert var 'font-lock-function-name-face t)
+            (when elapsed-time
+              (when-let ((humanized (nrepl-dict-get elapsed-time "humanized")))
+                (cider-insert humanized)))
             (when context  (cider-insert context 'font-lock-doc-face t))
             (when message  (cider-insert message 'font-lock-string-face t))
             (when expected
@@ -450,16 +456,21 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
                   test))
               tests))
 
-(defun cider-test-render-report (buffer summary results)
+(defun cider-test-render-report (buffer summary results &optional elapsed-time 
ns-elapsed-time)
   "Emit into BUFFER the report for the SUMMARY, and test RESULTS."
   (with-current-buffer buffer
     (let ((inhibit-read-only t))
       (cider-test-report-mode)
       (cider-insert "Test Summary" 'bold t)
       (dolist (ns (nrepl-dict-keys results))
-        (insert (cider-propertize ns 'ns) "\n"))
+        (insert (cider-propertize ns 'ns)
+                (or (let ((ms (nrepl-dict-get (nrepl-dict-get ns-elapsed-time 
ns)
+                                              "ms")))
+                      (format " (%s ms)" ms))
+                    "")
+                "\n"))
       (cider-insert "\n")
-      (cider-test-render-summary buffer summary)
+      (cider-test-render-summary buffer summary elapsed-time)
       (nrepl-dbind-response summary (fail error)
         (unless (zerop (+ fail error))
           (cider-insert "Results" 'bold t "\n")
@@ -506,14 +517,18 @@ The optional arg TEST denotes an individual test name."
                       'ns)
                      (unless (stringp ns) " namespaces")))))
 
-(defun cider-test-echo-summary (summary results)
-  "Echo SUMMARY statistics for a test run returning RESULTS."
+(defun cider-test-echo-summary (summary results &optional elapsed-time)
+  "Echo SUMMARY statistics for a test run returning RESULTS in ELAPSED-TIME."
   (nrepl-dbind-response summary (ns test var fail error)
     (if (nrepl-dict-empty-p results)
         (message (concat (propertize "No assertions (or no tests) were run." 
'face 'cider-test-error-face)
                          "Did you forget to use `is' in your tests?"))
+      (let* ((ms (nrepl-dict-get elapsed-time "ms"))
+             (ms (if ms
+                     (propertize (concat " in " (prin1-to-string ms) "ms") 
'face 'font-lock-comment-face)
+                   ".")))
       (message (propertize
-                "%sRan %d assertions, in %d test functions. %d failures, %d 
errors."
+                "%sRan %d assertions, in %d test functions. %d failures, %d 
errors%s"
                 'face (cond ((not (zerop error)) 'cider-test-error-face)
                             ((not (zerop fail))  'cider-test-failure-face)
                             (t                   'cider-test-success-face)))
@@ -521,7 +536,7 @@ The optional arg TEST denotes an individual test name."
                            (cider-propertize (car (nrepl-dict-keys results)) 
'ns)
                          (propertize (format "%d namespaces" ns) 'face 
'default))
                        (propertize ": " 'face 'default))
-               test var fail error))))
+               test var fail error ms)))))
 
 ;;; Test definition highlighting
 ;;
@@ -685,7 +700,7 @@ running them."
           (cider-nrepl-send-request
            request
            (lambda (response)
-             (nrepl-dbind-response response (summary results status out err)
+             (nrepl-dbind-response response (summary results status out err 
elapsed-time ns-elapsed-time)
                (cond ((member "namespace-not-found" status)
                       (unless silent
                         (message "No test namespace: %s" (cider-propertize ns 
'ns))))
@@ -696,7 +711,7 @@ running them."
                         (setq cider-test-last-summary summary)
                         (setq cider-test-last-results results)
                         (cider-test-highlight-problems results)
-                        (cider-test-echo-summary summary results)
+                        (cider-test-echo-summary summary results elapsed-time)
                         (if (or (not (zerop (+ error fail)))
                                 cider-test-show-report-on-success)
                             (cider-test-render-report
@@ -704,14 +719,19 @@ running them."
                               cider-test-report-buffer
                               cider-auto-select-test-report-buffer)
                              summary
-                             results)
+                             results
+                             elapsed-time
+                             ns-elapsed-time)
                           (when (get-buffer cider-test-report-buffer)
                             (with-current-buffer cider-test-report-buffer
                               (let ((inhibit-read-only t))
                                 (erase-buffer)))
                             (cider-test-render-report
                              cider-test-report-buffer
-                             summary results))))))))
+                             summary
+                             results
+                             elapsed-time
+                             ns-elapsed-time))))))))
            conn))))))
 
 (defun cider-test-rerun-failed-tests ()
diff --git a/cider.el b/cider.el
index 12d0bdbaa7..0e70211b91 100644
--- a/cider.el
+++ b/cider.el
@@ -489,7 +489,7 @@ the artifact.")
 (defconst cider-latest-clojure-version "1.10.1"
   "Latest supported version of Clojure.")
 
-(defconst cider-required-middleware-version "0.32.0-alpha1"
+(defconst cider-required-middleware-version "0.32.0-alpha2"
   "The CIDER nREPL version that's known to work properly with CIDER.")
 
 (defcustom cider-injected-middleware-version cider-required-middleware-version



reply via email to

[Prev in Thread] Current Thread [Next in Thread]