Print log messages and setup custom test runner

Got tired of getting bit by catch statements and no logging printing.
Moved frontend to a custom test runner as we may eventually need the
node-test-runner for other apps/builds
pull/6336/head
Gabriel Horner 2022-08-06 02:21:27 -04:00
parent 0719163d30
commit 0301fd3173
3 changed files with 36 additions and 13 deletions

View File

@ -66,7 +66,7 @@
:devtools {:enabled false}
;; disable :static-fns to allow for with-redefs and repl development
:compiler-options {:static-fns false}
:main frontend.test.node-test-runner/main}
:main frontend.test.frontend-node-test-runner/main}
:publishing {:target :browser
:module-loader true

View File

@ -0,0 +1,19 @@
(ns frontend.test.frontend-node-test-runner
"This is a custom version of the node-test-runner for the frontend build"
{:dev/always true} ;; necessary for test-data freshness
(:require [frontend.test.node-test-runner :as node-test-runner]
[shadow.test.env :as env]
[lambdaisland.glogi.console :as glogi-console]
;; activate humane test output for all tests
[pjstadig.humane-test-output]))
;; Needed for new test runners
(defn ^:dev/after-load reset-test-data! []
(-> (env/get-test-data)
(env/reset-test-data!)))
(defn main [& args]
[]
(glogi-console/install!) ;; see log messages
(reset-test-data!)
(node-test-runner/parse-and-run-tests args))

View File

@ -1,6 +1,6 @@
(ns frontend.test.node-test-runner
"shadow-cljs test runner for :node-test that provides the same test selection
options as
"Application agnostic shadow-cljs test runner for :node-test that provides the
same test selection options as
https://github.com/cognitect-labs/test-runner#invoke-with-clojure--m-clojuremain.
This gives the user a fair amount of control over which tests and namespaces
to call from the commandline. Once this test runner is stable enough we should
@ -12,9 +12,7 @@
[clojure.set :as set]
[shadow.test :as st]
[cljs.test :as ct]
["util" :as util]
;; activate humane test output for all tests
[pjstadig.humane-test-output]))
[goog.string :as gstring]))
;; Cljs.test customization
;; Inherit behavior from default reporter
@ -47,10 +45,10 @@
(defn- print-summary
"Print help summary given args and opts strings"
[options-summary additional-msg]
(println (util/format "Usage: %s [OPTIONS]\nOptions:\n%s%s"
"$0"
options-summary
additional-msg)))
(println (gstring/format "Usage: %s [OPTIONS]\nOptions:\n%s%s"
"$0"
options-summary
additional-msg)))
(defn- parse-options
"Processes a command's functionality given a cli options definition, arguments
@ -172,9 +170,9 @@ returns selected tests and namespaces to run"
(st/run-test-vars test-env test-vars))
(st/run-all-tests test-env nil))))
(defn main [& args]
(reset-test-data!)
(defn parse-and-run-tests
"Main entry point for custom test runners"
[args]
(let [{:keys [options summary]} (parse-options args cli-options)]
(if (:help options)
(do
@ -182,3 +180,9 @@ returns selected tests and namespaces to run"
"\n\nMultiple options are ANDed. Defaults to running all tests")
(js/process.exit 0))
(run-tests (keys (env/get-tests)) (env/get-test-vars) options))))
(defn main
"Main entry point if this ns is configured as a test runner"
[& args]
(reset-test-data!)
(parse-and-run-tests args))