Open butzopower opened 5 months ago
When running tests via cursive test runner, if clojure.test/do-report is called with a report type unknown to cursive any method set up to handle that report type via clojure.test/report multimethod is not called.
clojure.test/do-report
clojure.test/report
(ns cursive-custom-report-test (:require [clojure.test :refer :all])) (defmethod clojure.test/assert-expr 'roughly [msg form] `(let [op1# ~(nth form 1) op2# ~(nth form 2) tolerance# (if (= 4 ~(count form)) ~(last form) 2) decimals# (/ 1. (Math/pow 10 tolerance#)) result# (< (Math/abs (- op1# op2#)) decimals#)] (clojure.test/do-report {:type (if result# :pass :custom-fail) :message ~msg :expected (format "%s should be roughly %s with %s tolerance" op1# op2# decimals#) :actual result#}) result#)) (defmethod clojure.test/report :custom-fail [m] (clojure.test/inc-report-counter :fail) (clojure.test/with-test-out (println "custom failure message"))) (clojure.test/deftest PI-test (is (roughly 3.14 Math/PI 2)) (is (roughly 3.14 Math/PI 3))) (defn -main [& _args] (run-tests 'cursive-custom-report-test))
In the above exmple, running PI-test via IDE will pass when it should fail. Running the main function via IDE will fail properly.
PI-test
When running tests via cursive test runner, if
clojure.test/do-report
is called with a report type unknown to cursive any method set up to handle that report type viaclojure.test/report
multimethod is not called.In the above exmple, running
PI-test
via IDE will pass when it should fail. Running the main function via IDE will fail properly.