cursive icon indicating copy to clipboard operation
cursive copied to clipboard

Test reporting fails over non-string assertion message in `clojure.test/is`

Open WBSemple opened this issue 1 year ago • 0 comments

Any failing clojure.test/is assertions where non-string objects are passed in the second argument will cause the test run to fall over with a ClassCastException (it appears to retry several times).

To reporduce, run the following test with Run Test Under Caret in REPL or Run Tests in Current NS in REPL. It will break on the third assertion; gutter icons will appear for the first two assertions, but nothing after.

(deftest my-test
  (is false "msg")
  (is true {:hello "there"})
  (is false {:hello "again"}) ;; breaks here
  (is true))

It would be great if cursive could handle this more gracefully as it can be quite awkward in projects where this is commonplace.

My current workaround is to hijack clojure.test/assert-expr and add a pr-str to msg:

(defonce assert-expr* assert-expr)
(.bindRoot (var assert-expr) (fn [msg form] (assert-expr* (pr-str msg) form)))

WBSemple avatar Sep 18 '24 16:09 WBSemple