From 13f00be44f587ee3f7f91d09f9640a3785d8f86f Mon Sep 17 00:00:00 2001 From: PEZ <> Date: Thu, 7 Nov 2024 14:17:20 +0100 Subject: [PATCH] Fix test runner looping over more than one test ns --- .../.joyride/src/test_runner/runner.cljs | 58 +++++++------------ e2e-test-ws/.joyride/src/tests/foo/bar.txt | 0 .../.joyride/src/tests/foo/bar/b_test.cljs | 7 ++- e2e-test-ws/runTests.js | 2 +- 4 files changed, 27 insertions(+), 40 deletions(-) delete mode 100644 e2e-test-ws/.joyride/src/tests/foo/bar.txt diff --git a/e2e-test-ws/.joyride/src/test_runner/runner.cljs b/e2e-test-ws/.joyride/src/test_runner/runner.cljs index 97ce2c6..16b106a 100644 --- a/e2e-test-ws/.joyride/src/test_runner/runner.cljs +++ b/e2e-test-ws/.joyride/src/test_runner/runner.cljs @@ -52,48 +52,30 @@ (p/reject! running fail-reason) (p/resolve! running true))))) -(defn test-file? [file] - (and (.endsWith file ".cljs") - (not (.startsWith file "_")))) - -(defn file->ns [file] +(defn- file->ns [src-path file] (-> file - (string/replace #"/" ".") + (subs (inc (count src-path))) (string/replace #"\.cljs$" "") - (string/replace #"^tests\." ""))) - -(defn find-test-files+ [path] - (p/->> (vscode/workspace.findFiles (str path "/**/*_test.cljs")) - (.map vscode/workspace.asRelativePath))) - -(defn get-test-namespaces+ [tests-path] - (p/let [files (find-test-files+ tests-path)] - (def files files) - (->> files - (filter #(test-file? (first %))) - (map #(file->ns (first %))) - (map symbol)))) + (string/replace #"/" ".") + (string/replace #"_" "-"))) -(comment - (def tests-path "e2e-test-ws/.joyride/src") - (p/let [test-namespaces (get-test-namespaces+ tests-path)] - (println "test-namespaces" test-namespaces) - (def test-namespaces test-namespaces) - :rcf) - ) +(defn- find-test-nss+ [src-path] + (p/let [file-uris (vscode/workspace.findFiles (str src-path "/**/*_test.cljs")) + files (.map file-uris (fn [uri] + (vscode/workspace.asRelativePath uri false))) + nss-strings (-> files + (.map (partial file->ns src-path)))] + (mapv symbol nss-strings))) -(defn run-all-tests [tests-directory] +(defn run-all-tests [src-path] (let [running (p/deferred)] (swap! db/!state assoc :running running) - (try - (doseq [ns-sym (config/ns-symbols)] - (require ns-sym) - (cljs.test/run-tests ns-sym)) - (catch :default e - (p/reject! (:running @db/!state) e))) - running)) - -(comment - (run-all-tests) - :rcf) + (p/let [nss-syms (find-test-nss+ src-path)] + (println "Running tests in" nss-syms) + (-> (p/do + (apply require nss-syms) + (apply cljs.test/run-tests nss-syms) + running) + (p/catch (fn [e] + (p/reject! (:running @db/!state) e))))))) diff --git a/e2e-test-ws/.joyride/src/tests/foo/bar.txt b/e2e-test-ws/.joyride/src/tests/foo/bar.txt deleted file mode 100644 index e69de29..0000000 diff --git a/e2e-test-ws/.joyride/src/tests/foo/bar/b_test.cljs b/e2e-test-ws/.joyride/src/tests/foo/bar/b_test.cljs index a053870..6024c76 100644 --- a/e2e-test-ws/.joyride/src/tests/foo/bar/b_test.cljs +++ b/e2e-test-ws/.joyride/src/tests/foo/bar/b_test.cljs @@ -1 +1,6 @@ -(ns tests.foo.bar.b-test) \ No newline at end of file +(ns tests.foo.bar.b-test + (:require [cljs.test :refer [deftest testing is]])) + +(deftest hello + (testing "We can test things" + (is (= :foo :foo)))) \ No newline at end of file diff --git a/e2e-test-ws/runTests.js b/e2e-test-ws/runTests.js index b1cbb14..c44dbb7 100644 --- a/e2e-test-ws/runTests.js +++ b/e2e-test-ws/runTests.js @@ -3,6 +3,6 @@ const vscode = require('vscode'); exports.run = async () => { return vscode.commands.executeCommand( 'joyride.runCode', - "(require '[test-runner.runner :as runner]) (runner/run-all-tests)" + "(require '[test-runner.runner :as runner]) (runner/run-all-tests \".joyride/src\")" ); };