Browse Source

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
Gabriel Horner 3 years ago
parent
commit
0301fd3173

+ 1 - 1
shadow-cljs.edn

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

+ 19 - 0
src/test/frontend/test/frontend_node_test_runner.cljs

@@ -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))

+ 16 - 12
src/test/frontend/test/node_test_runner.cljs

@@ -1,6 +1,6 @@
 (ns frontend.test.node-test-runner
 (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.
   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
   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
   to call from the commandline. Once this test runner is stable enough we should
@@ -12,9 +12,7 @@
             [clojure.set :as set]
             [clojure.set :as set]
             [shadow.test :as st]
             [shadow.test :as st]
             [cljs.test :as ct]
             [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
 ;; Cljs.test customization
 ;; Inherit behavior from default reporter
 ;; Inherit behavior from default reporter
@@ -47,10 +45,10 @@
 (defn- print-summary
 (defn- print-summary
   "Print help summary given args and opts strings"
   "Print help summary given args and opts strings"
   [options-summary additional-msg]
   [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
 (defn- parse-options
   "Processes a command's functionality given a cli options definition, arguments
   "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-test-vars test-env test-vars))
       (st/run-all-tests test-env nil))))
       (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)]
   (let [{:keys [options summary]} (parse-options args cli-options)]
     (if (:help options)
     (if (:help options)
       (do
       (do
@@ -182,3 +180,9 @@ returns selected tests and namespaces to run"
                        "\n\nMultiple options are ANDed. Defaults to running all tests")
                        "\n\nMultiple options are ANDed. Defaults to running all tests")
         (js/process.exit 0))
         (js/process.exit 0))
       (run-tests (keys (env/get-tests)) (env/get-test-vars) options))))
       (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))