Merge fail reports

This commit is contained in:
Miloslav Nenadal 2016-02-21 18:13:10 +01:00
parent 81b3188ce7
commit 9f55ee76aa
3 changed files with 43 additions and 54 deletions

View file

@ -29,31 +29,7 @@
(defmethod assert-expr 'clojure.core/= [msg [_ a & more]]
(=-body msg a more))
(defmethod report :fail
[{:keys [type expected actual diffs message] :as event}]
(with-test-out
(inc-report-counter :fail)
(println "\nFAIL in" (testing-vars-str event))
(when (seq *testing-contexts*) (println (testing-contexts-str)))
(when message (println message))
(binding [*out* (pp/get-pretty-writer *out*)]
(let [print-expected (fn [actual]
(print "expected: ")
(pp/pprint expected)
(print " actual: ")
(pp/pprint actual))]
(if (seq diffs)
(doseq [[actual [a b]] diffs]
(print-expected actual)
(print " diff:")
(if a
(do (print " - ")
(pp/pprint a)
(print " + "))
(print " + "))
(when b
(pp/pprint b)))
(print-expected actual))))))
(define-fail-report)
;; this code is just yanked from clojure.pprint
(defmethod pp/simple-dispatch clojure.lang.IRecord [arec]
(pprint-record arec))

View file

@ -1,6 +1,8 @@
(ns pjstadig.util
(:require #?(:clj [clojure.pprint :as pp]
:cljs [cljs.pprint :as pp :include-macros true])))
#?(:clj (:use [clojure.test]))
(:require #?@(:clj [[clojure.pprint :as pp]]
:cljs [[cljs.pprint :as pp :include-macros true]
[cljs.test :refer [inc-report-counter! testing-vars-str testing-contexts-str get-current-env]]])))
(defn- print-seq [aseq]
(pp/pprint-logical-block
@ -27,3 +29,39 @@
(pp/pprint-newline :linear)
(recur (next aseq)))))))
(defn- report-
[{:keys [type expected actual diffs message] :as event}]
#?(:clj (inc-report-counter :fail)
:cljs (inc-report-counter! :fail))
(println "\nFAIL in" (testing-vars-str event))
(when #?(:clj (seq *testing-contexts*)
:cljs (:testing-contexts (get-current-env)))
(println (testing-contexts-str)))
(when message (println message))
(binding [*out* (pp/get-pretty-writer *out*)]
(let [print-expected (fn [actual]
(print "expected: ")
(pp/pprint expected)
(print " actual: ")
(pp/pprint actual))]
(if (seq diffs)
(doseq [[actual [a b]] diffs]
(print-expected actual)
(print " diff:")
(if a
(do (print " - ")
(pp/pprint a)
(print " + "))
(print " + "))
(when b
(pp/pprint b)))
(print-expected actual)))))
(defn define-fail-report []
#?(:clj (defmethod report :fail [& args]
(with-test-out
(apply report- args)))
:cljs (defmethod cljs.test/report [:cljs.test/default :fail]
[& args]
(apply report- args))))

View file

@ -1,7 +1,5 @@
(ns pjstadig.run-all
(:require [cljs.test
:refer [inc-report-counter! testing-vars-str testing-contexts-str get-current-env]
:refer-macros [run-all-tests run-tests]]
(:require [cljs.test :refer-macros [run-all-tests run-tests]]
[pjstadig.humane-test-output.formatting-test]
[pjstadig.humane-test-output.records-test]
[clojure.data :refer [diff]]
@ -19,30 +17,7 @@
(util/pprint-record amap)
(pprint-map amap)))
(defmethod cljs.test/report [:cljs.test/default :fail]
[{:keys [type expected actual diffs message] :as event}]
(inc-report-counter! :fail)
(println "\nFAIL in" (testing-vars-str event))
(when (:testing-contexts (get-current-env)) (println (testing-contexts-str)))
(when message (println message))
(binding [*out* (pp/get-pretty-writer *out*)]
(let [print-expected (fn [actual]
(print "expected: ")
(pp/pprint expected)
(print " actual: ")
(pp/pprint actual))]
(if (seq diffs)
(doseq [[actual [a b]] diffs]
(print-expected actual)
(print " diff:")
(if a
(do (print " - ")
(pp/pprint a)
(print " + "))
(print " + "))
(when b
(pp/pprint b)))
(print-expected actual)))))
(util/define-fail-report)
(defn ^:export run []
(run-all-tests #"pjstadig.*-test"))