Correctly format diff output when = is fully qualified.

This commit is contained in:
Paul Stadig 2015-11-28 15:58:11 -05:00
parent 7bb7cf9050
commit f4b2e226cb
2 changed files with 27 additions and 14 deletions

View file

@ -3,24 +3,30 @@
(:require [clojure.data :as data] (:require [clojure.data :as data]
[clojure.pprint :as pp])) [clojure.pprint :as pp]))
(defn =-body
[msg a more]
`(let [a# ~a]
(if-let [more# (seq (list ~@more))]
(let [result# (apply = a# more#)]
(if result#
(do-report {:type :pass, :message ~msg,
:expected a#, :actual more#})
(do-report {:type :fail, :message ~msg,
:expected a#, :actual more#,
:diffs (map vector
more#
(map #(take 2 (data/diff a# %))
more#))}))
result#)
(throw (Exception. "= expects more than one argument")))))
(defonce activation-body (defonce activation-body
(delay (delay
(when (not (System/getenv "INHUMANE_TEST_OUTPUT")) (when (not (System/getenv "INHUMANE_TEST_OUTPUT"))
(defmethod assert-expr '= [msg [_ a & more]] (defmethod assert-expr '= [msg [_ a & more]]
`(let [a# ~a] (=-body msg a more))
(if-let [more# (seq (list ~@more))] (defmethod assert-expr 'clojure.core/= [msg [_ a & more]]
(let [result# (apply = a# more#)] (=-body msg a more))
(if result#
(do-report {:type :pass, :message ~msg,
:expected a#, :actual more#})
(do-report {:type :fail, :message ~msg,
:expected a#, :actual more#,
:diffs (map vector
more#
(map #(take 2 (data/diff a# %))
more#))}))
result#)
(throw (Exception. "= expects more than one argument")))))
(defmethod report :fail (defmethod report :fail
[{:keys [type expected actual diffs message] :as event}] [{:keys [type expected actual diffs message] :as event}]

View file

@ -17,3 +17,10 @@
(let [foo {:foo :bar :baz :quux :something "a long string?" (let [foo {:foo :bar :baz :quux :something "a long string?"
:another-key "and another value"}] :another-key "and another value"}]
(is (list? foo))))) (is (list? foo)))))
(defmacro deftest+
[test-name expected actual]
`(deftest ~test-name
(is (= ~expected ~actual))))
(deftest+ t-macro-wrapping 1 2)