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

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

[nongnu] elpa/cider 74be055295: Introduce fail-fast functionality (#3374


From: ELPA Syncer
Subject: [nongnu] elpa/cider 74be055295: Introduce fail-fast functionality (#3374)
Date: Fri, 21 Jul 2023 13:00:47 -0400 (EDT)

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

    Introduce fail-fast functionality (#3374)
    
    * Prefer `format`
    
    https://github.com/clojure-emacs/cider/pull/3373#discussion_r1270531001
    
    * Document indentation inference
    
    * Bump cider-nrepl
    
    
https://github.com/clojure-emacs/cider-nrepl/blob/39c39e3f57a79dad7333ad0220093556feb87a9a/CHANGELOG.md#master-unreleased
    
    * Introduce `cider-test-fail-fast`
    
    * PR feedback
---
 CHANGELOG.md                                      |  5 ++++-
 cider-test.el                                     | 20 +++++++++++++----
 cider.el                                          |  2 +-
 doc/modules/ROOT/pages/indent_spec.adoc           | 26 +++++++++++++++++++++++
 doc/modules/ROOT/pages/testing/running_tests.adoc |  9 ++++++++
 5 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a638bb62c4..8917d8f5d5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,9 @@
 - [#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.
+- `cider-test`: only show diffs for collections.
+- `cider-test`: fail-fast by default, as controlled by the new 
`cider-test-fail-fast` defcustom. 
+- Infer indentation specs when possible 
([doc](https://docs.cider.mx/cider/indent_spec.html#indentation-inference)).
 
 ### Bugs fixed
 
@@ -17,7 +20,7 @@
 
 ### Changes
 
-- Bump the injected `cider-nrepl` to 0.31.
+- Bump the injected `cider-nrepl` to 
[0.32](https://github.com/clojure-emacs/cider-nrepl/blob/master/CHANGELOG.md).
 
 ## 1.7.0 (2023-03-23)
 
diff --git a/cider-test.el b/cider-test.el
index 3436077ab0..b53f558a97 100644
--- a/cider-test.el
+++ b/cider-test.el
@@ -389,6 +389,9 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
         (cider-insert (format "%d errors" error) 'cider-test-error-face t))
       (when (zerop (+ fail error))
         (cider-insert (format "%d passed" pass) 'cider-test-success-face t))
+      (when cider-test-fail-fast
+        (cider-insert "cider-test-fail-fast: " 'font-lock-comment-face nil)
+        (cider-insert "t" 'cider-test-constant-face t))
       (insert "\n\n"))))
 
 (defun cider-test-render-assertion (buffer test)
@@ -466,7 +469,7 @@ With the actual value, the outermost '(not ...)' 
s-expression is removed."
         (insert (cider-propertize ns 'ns)
                 (or (let ((ms (nrepl-dict-get (nrepl-dict-get ns-elapsed-time 
ns)
                                               "ms")))
-                      (format " (%s ms)" ms))
+                      (propertize (format " %s ms" ms) 'face 
'font-lock-comment-face))
                     "")
                 "\n"))
       (cider-insert "\n")
@@ -525,7 +528,7 @@ The optional arg TEST denotes an individual test name."
                          "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)
+                     (propertize (format " in %s ms" ms ) 'face 
'font-lock-comment-face)
                    ".")))
       (message (propertize
                 "%sRan %d assertions, in %d test functions. %d failures, %d 
errors%s"
@@ -653,6 +656,11 @@ The selectors can be either keywords or strings."
    (split-string
     (cider-read-from-minibuffer message))))
 
+(defcustom cider-test-fail-fast t
+  "Controls whether to stop a test run on failure/error."
+  :type 'boolean
+  :package-version '(cider . "1.8.0"))
+
 (defun cider-test-execute (ns &optional tests silent prompt-for-filters)
   "Run tests for NS, which may be a keyword, optionally specifying TESTS.
 This tests a single NS, or multiple namespaces when using keywords `:project',
@@ -682,10 +690,11 @@ running them."
               ;; we generate a different message when running individual tests
               (cider-test-echo-running ns (car tests))
             (cider-test-echo-running ns)))
-        (let ((request `("op" ,(cond ((stringp ns)         "test")
+        (let ((retest? (eq :non-passing ns))
+              (request `("op" ,(cond ((stringp ns)         "test")
                                      ((eq :project ns)     "test-all")
                                      ((eq :loaded ns)      "test-all")
-                                     ((eq :non-passing ns) "retest")))))
+                                     (retest?              "retest")))))
           ;; we add optional parts of the request only when relevant
           (when (and (listp include-selectors) include-selectors)
             (setq request (append request `("include" ,include-selectors))))
@@ -697,6 +706,9 @@ running them."
             (setq request (append request `("tests" ,tests))))
           (when (or (stringp ns) (eq :project ns))
             (setq request (append request `("load?" ,"true"))))
+          (when (and cider-test-fail-fast
+                     (not retest?))
+            (setq request (append request `("fail-fast" ,"true"))))
           (cider-nrepl-send-request
            request
            (lambda (response)
diff --git a/cider.el b/cider.el
index 0e70211b91..adfa7545c5 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-alpha2"
+(defconst cider-required-middleware-version "0.32.0-alpha3"
   "The CIDER nREPL version that's known to work properly with CIDER.")
 
 (defcustom cider-injected-middleware-version cider-required-middleware-version
diff --git a/doc/modules/ROOT/pages/indent_spec.adoc 
b/doc/modules/ROOT/pages/indent_spec.adoc
index b72a5d612a..145779c479 100644
--- a/doc/modules/ROOT/pages/indent_spec.adoc
+++ b/doc/modules/ROOT/pages/indent_spec.adoc
@@ -156,3 +156,29 @@ so that it will be indented like this:
 The indent spec does this as well. It lets you specify that, for each argument
 beyond the 2nd, if it is a form, it should be internally indented as having 1
 special argument.
+
+== Indentation inference
+
+It's worth noting that starting from cider-nrepl 0.32, indentation can be 
inferred for you,
+so you wouldn't have to specify it.
+
+For that to happen, it's most recommended that you write idiomatic Clojure 
macros:
+
+* If your macro is analog to a clojure.core one, name it identically
+  * e.g. name your macro `defprotocol`, not `my-defprotocol`
+    * (this is intentful usage of Clojure's namespace system)
+* If your macro is analog to a clojure.core one, mirror all its arglists
+  * The exact names that you choose for your args do not matter
+  * It's the structure of the arglists that have to match.
+  * It doesn't matter if you express a given arg as a name, or as a 
destructured map/vector.
+* Name 'body' args like using clojure.core customs
+  * good: `[opts body]`
+  * bad: `[opts etc]`
+  * good: `[& body]`
+  * bad: `[& etc]`
+  * Other commonly accepted names include `forms`, `clauses`, etc.
+
+You certainly don't _have_ to follow these suggestions - it's only for your 
convenience,
+as the indentation produced by CIDER will be better.
+
+Other tools may eventually also use these very same inference rules.
diff --git a/doc/modules/ROOT/pages/testing/running_tests.adoc 
b/doc/modules/ROOT/pages/testing/running_tests.adoc
index 4e2934f694..8acc8b653d 100644
--- a/doc/modules/ROOT/pages/testing/running_tests.adoc
+++ b/doc/modules/ROOT/pages/testing/running_tests.adoc
@@ -91,6 +91,15 @@ kbd:[C-c C-t t] or kbd:[C-c C-t C-t].
 
 You can configure CIDER's test execution behavior in multiple ways.
 
+=== Fail-fast
+
+Starting from 1.8.0, CIDER has standard fail-fast functionality,
+controlled by the `cider-test-fail-fast` defcustom (default `t`).
+
+NOTE: fail-fast will never be chosen for the "retest" functionality,
+since that would cause you to lose the majority of the tests
+that previously failed.
+
 === Test Namespace Naming Convention
 
 If your tests are not following the `some.ns-test` naming convention



reply via email to

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