reagent/test/reagenttest/runtests.cljs
Juho Teperi b7304d0f3f Fix aget/aset use with objects
This removes the interop macros which used aget/aset and prevented
Closure naming mangling, now normal property and method access is used
where possible, and goog.object used when using variable keys. Further
testing is needed to ensure this works correctly with Closure, as there
are some properties that are used with goog.object in one place, and as
property in another.

Fixes #324
2018-04-19 17:25:37 +03:00

59 lines
1.7 KiB
Clojure

(ns reagenttest.runtests
(:require [reagenttest.testreagent]
[reagenttest.testcursor]
[reagenttest.testratom]
[reagenttest.testratomasync]
[reagenttest.testtrack]
[reagenttest.testwithlet]
[reagenttest.testwrap]
[cljs.test :as test]
[doo.runner :as doo :include-macros true]
[reagent.core :as r]
[reagent.debug :refer [dbg log]]))
(enable-console-print!)
(def test-results (r/atom nil))
(def test-box-style {:position 'absolute
:margin-left -35
:color :#aaa})
(defn all-tests []
#_(test/run-tests 'reagenttest.testratomasync)
(test/run-all-tests #"reagenttest.test.*"))
(defmethod test/report [::test/default :summary] [m]
;; ClojureScript 2814 doesn't return anything from run-tests
(reset! test-results m)
(println "\nRan" (:test m) "tests containing"
(+ (:pass m) (:fail m) (:error m)) "assertions.")
(println (:fail m) "failures," (:error m) "errors."))
(defn run-tests []
(reset! test-results nil)
(if r/is-client
(js/setTimeout all-tests 100)
(all-tests)))
(defn test-output-mini []
(let [res @test-results]
[:div {:style test-box-style
:on-click run-tests}
(if res
(if (zero? (+ (:fail res) (:error res)))
"All tests ok"
[:span "Test failure: "
(:fail res) " failures, " (:error res) " errors."])
"testing")]))
(defn init! []
;; This function is only used when running tests from the demo app.
;; Which is why exit-point is set manually.
(when (some? (test/deftest empty-test))
(doo/set-exit-point! (fn [success?] nil))
(run-tests)
[#'test-output-mini]))
(doo/doo-all-tests #"reagenttest.test.*")