Konrad Mrożek
2023-06-06 10d3e262e1ebcba08208cde2b7fd0ffc6856f1b0
commit | author | age
919581 1 (binding [*compile-files* true]
KM 2   (require 'clojure.test))
3
4 (ns test-runner
5   (:require [clojure.test :as t]))
6
7 (when-not (.exists (java.io.File. "classes"))
8   (.. (java.io.File. "classes") mkdir))
9
10 (defmulti emacs-report :type)
11
12 (defmethod emacs-report :pass
13   [m]
14   (t/with-test-out
15     (println "PASS:")))
16
17 (defn -main  [& [test-file]]
18   (binding  [*compile-files* true]
19     (compile 'test-runner)
20     (let  [test-namespaces (->> (or test-file  "test")
21                                 (java.io.File.)
22                                 (file-seq)
23                                 (filter (memfn isFile))
24                                 (map (memfn getPath))
25                                 (map load-file)
26                                 (map (comp :ns meta))
27                                 (into #{}))]
10d3e2 28       (System/exit (if (pos? (reduce (fn [total-fails n]
KM 29                                        (with-redefs [t/report emacs-report]
30                                          (let [results  (t/run-tests n)]
31                                            (+ total-fails
32                                               (:fail results 0)
33                                               (:error results 0)))))
34                                      0
35                                      test-namespaces))
36                      1
37                      0)))))