From 9f55ee76aa8580e57a3ff41fdfa500bc8cd7cf25 Mon Sep 17 00:00:00 2001 From: Miloslav Nenadal Date: Sun, 21 Feb 2016 18:13:10 +0100 Subject: [PATCH] Merge fail reports --- src/pjstadig/humane_test_output.clj | 26 +----------------- src/pjstadig/util.cljc | 42 +++++++++++++++++++++++++++-- test/pjstadig/run_all.cljs | 29 ++------------------ 3 files changed, 43 insertions(+), 54 deletions(-) diff --git a/src/pjstadig/humane_test_output.clj b/src/pjstadig/humane_test_output.clj index c9764a3..7ead36a 100644 --- a/src/pjstadig/humane_test_output.clj +++ b/src/pjstadig/humane_test_output.clj @@ -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)) diff --git a/src/pjstadig/util.cljc b/src/pjstadig/util.cljc index 2146f26..69bfc03 100644 --- a/src/pjstadig/util.cljc +++ b/src/pjstadig/util.cljc @@ -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)))) + diff --git a/test/pjstadig/run_all.cljs b/test/pjstadig/run_all.cljs index 6f2e87f..bf75d93 100644 --- a/test/pjstadig/run_all.cljs +++ b/test/pjstadig/run_all.cljs @@ -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"))