This commit is contained in:
Michiel Borkent 2024-10-31 13:29:47 +01:00
parent 77fc49d1fd
commit 23aa68346c
2 changed files with 35 additions and 17 deletions

View file

@ -297,7 +297,7 @@
current assertion." current assertion."
{:added "1.1"} {:added "1.1"}
[m] [m]
(let [{:keys [file line]} m] (let [{:keys [file line]} (merge m (meta (first *testing-vars*)))]
(str (str
;; Uncomment to include namespace in failure report: ;; Uncomment to include namespace in failure report:
;;(ns-name (:ns (meta (first *testing-vars*)))) "/ " ;;(ns-name (:ns (meta (first *testing-vars*)))) "/ "
@ -357,7 +357,7 @@
(report (report
(case (case
(:type m) (:type m)
:fail (merge (stacktrace-file-and-line (drop-while :fail (merge m #_(stacktrace-file-and-line (drop-while
#(let [cl-name (.getClassName ^StackTraceElement %)] #(let [cl-name (.getClassName ^StackTraceElement %)]
(or (str/starts-with? cl-name "java.lang.") (or (str/starts-with? cl-name "java.lang.")
(str/starts-with? cl-name "clojure.test$") (str/starts-with? cl-name "clojure.test$")
@ -449,10 +449,14 @@
`(let [values# (list ~@args) `(let [values# (list ~@args)
result# (apply ~pred values#)] result# (apply ~pred values#)]
(if result# (if result#
(do-report {:type :pass, :message ~msg, (do-report (merge {:type :pass, :message ~msg,
:expected '~form, :actual (cons '~pred values#)}) :expected '~form, :actual (cons '~pred values#)
(do-report {:type :fail, :message ~msg, :file *file*}
:expected '~form, :actual (list '~'not (cons '~pred values#))})) ~(meta form)))
(do-report (merge {:type :fail, :message ~msg,
:expected '~form, :actual (list '~'not (cons '~pred values#))
:file *file*}
~(meta form))))
result#))) result#)))
(defn assert-any (defn assert-any
@ -462,10 +466,14 @@
[msg form] [msg form]
`(let [value# ~form] `(let [value# ~form]
(if value# (if value#
(do-report {:type :pass, :message ~msg, (do-report (merge {:type :pass, :message ~msg,
:expected '~form, :actual value#}) :expected '~form, :actual value#
(do-report {:type :fail, :message ~msg, :file *file*}
:expected '~form, :actual value#})) ~(meta form)))
(do-report (merge {:type :fail, :message ~msg,
:expected '~form, :actual value#
:file *file*}
~(meta form))))
value#)) value#))
@ -485,7 +493,9 @@
(defmethod assert-expr :always-fail [msg form] (defmethod assert-expr :always-fail [msg form]
;; nil test: always fail ;; nil test: always fail
`(do-report {:type :fail, :message ~msg})) `(do-report {:type :fail, :message ~msg
:file clojure.core/*file*
:line ~(:line (meta form))}))
(defmethod assert-expr :default [msg form] (defmethod assert-expr :default [msg form]
(if (and (sequential? form) (function? (first form))) (if (and (sequential? form) (function? (first form)))
@ -501,7 +511,9 @@
(do-report {:type :pass, :message ~msg, (do-report {:type :pass, :message ~msg,
:expected '~form, :actual (class object#)}) :expected '~form, :actual (class object#)})
(do-report {:type :fail, :message ~msg, (do-report {:type :fail, :message ~msg,
:expected '~form, :actual (class object#)})) :expected '~form, :actual (class object#)
:file clojure.core/*file*
:line ~(:line (meta form))}))
result#))) result#)))
(defmethod assert-expr 'thrown? [msg form] (defmethod assert-expr 'thrown? [msg form]
@ -512,7 +524,9 @@
body (nthnext form 2)] body (nthnext form 2)]
`(try ~@body `(try ~@body
(do-report {:type :fail, :message ~msg, (do-report {:type :fail, :message ~msg,
:expected '~form, :actual nil}) :expected '~form, :actual nil
:file clojure.core/*file*
:line ~(:line (meta form))})
(catch ~klass e# (catch ~klass e#
(do-report {:type :pass, :message ~msg, (do-report {:type :pass, :message ~msg,
:expected '~form, :actual e#}) :expected '~form, :actual e#})
@ -534,6 +548,8 @@
(do-report {:type :pass, :message ~msg, (do-report {:type :pass, :message ~msg,
:expected '~form, :actual e#}) :expected '~form, :actual e#})
(do-report {:type :fail, :message ~msg, (do-report {:type :fail, :message ~msg,
:file clojure.core/*file*
:line ~(:line (meta form))
:expected '~form, :actual e#}))) :expected '~form, :actual e#})))
e#)))) e#))))
@ -552,7 +568,9 @@
line# (:line exd#) line# (:line exd#)
message# (ex-message cause#) message# (ex-message cause#)
stack# (-> (sci.core/stacktrace t#) (sci.core/format-stacktrace))] stack# (-> (sci.core/stacktrace t#) (sci.core/format-stacktrace))]
(do-report (cond-> {:type :error, :message ~msg, (do-report (cond-> {:file clojure.core/*file*
:line ~(:line (meta form))
:type :error, :message ~msg,
:expected '~form, :actual cause#} :expected '~form, :actual cause#}
file# (assoc :file file#) file# (assoc :file file#)
line# (assoc :line line#) line# (assoc :line line#)

View file

@ -83,8 +83,8 @@ true")))))
"3.14 should be roughly 3.141592653589793"))) "3.14 should be roughly 3.141592653589793")))
(deftest rebind-vars-test (deftest rebind-vars-test
(is (bb "(binding [clojure.test/report (constantly true)] nil)")) (is (bb "(require '[clojure.test]) (binding [clojure.test/report (constantly true)] nil)"))
(is (bb "(binding [clojure.test/test-var (constantly true)] nil)"))) (is (bb "(require '[clojure.test]) (binding [clojure.test/test-var (constantly true)] nil)")))
(deftest rebind-report-test (deftest rebind-report-test
(let [[m1 m2 m3] (let [[m1 m2 m3]