Skip to content

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

Description

@WBSemple

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)))

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugMarks issues describing bugsreleased-eapMarks issues which have had the fixes released in an EAP build

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions