Konrad Mrożek
2023-10-17 7453638e17f93761480ded6586ff1ba06195f463
clojure/src/test_runner.clj
@@ -9,8 +9,10 @@
     ~@body))
(with-class-cache
  (require '[clojure.test :as t]))
  (require '[clojure.test :as t]
           '[lambdaisland.deep-diff2 :as ddiff]))
(def no-colors-printer (ddiff/printer {:print-color false}))
(defmulti vim-report :type)
(defmethod vim-report :begin-test-ns [m]
@@ -29,6 +31,21 @@
    (println (str "FAIL:" source-file ":" (:line m) ":" (t/testing-vars-str m) ":" (t/testing-contexts-str) ":" (:message m "FAIL")))
    (println (str "FAIL-CONTINUE:EXPECTED:" (pr-str (:expected m))))
    (println (str "FAIL-CONTINUE:ACTUAL:" (pr-str (:actual m))))))
(defmethod t/assert-expr '= [msg form]
  (let [args (rest form)
        pred (first form)]
    `(let [values# (list ~@args)
           result# (apply ~pred values#)]
       (if result#
         (t/do-report {:type :pass, :message ~msg,
                       :expected '~form, :actual (cons '~pred values#)})
         (do
           (t/do-report {:type :fail, :message ~msg,
                         :expected '~form, :actual (list '~'not (cons '~pred values#))})
           (-> (apply ddiff/diff values#)
               (ddiff/pretty-print no-colors-printer))))
       result#)))
(defn- find-line-number [source-file m]
  (if (instance? Throwable (:actual m))
@@ -55,7 +72,9 @@
      (println (str "ERROR-CONTINUE:ACTUAL:"
                    (if (instance? Throwable (:actual m))
                      (ex-message (:actual m))
                      (pr-str (:actual m))))))))
                      (pr-str (:actual m)))))
      (when (instance? Throwable (:actual m))
        (.printStackTrace (:actual m))))))
(defmethod vim-report :default
  [_])
@@ -104,10 +123,14 @@
          (System/exit
           (if (pos? (if (and -test-file -test-line)
                       (let [results (t/run-test-var (find-closest-test (.. (java.io.File. -test-file) getAbsolutePath)
                                                                        (parse-long -test-line)))]
                         (+ (:fail results 0)
                            (:error results 0)))
                       (if-let [test-var (find-closest-test (.. (java.io.File. -test-file) getAbsolutePath)
                                                            (parse-long -test-line))]
                         (->> (t/run-test-var test-var)
                              ((juxt :fail :error))
                              (apply +))
                         (do
                           (println "No test found")
                           0))
                       (reduce (fn [total-fails n]
                                 (let [results (t/run-tests n)]
                                   (+ total-fails
@@ -117,6 +140,3 @@
                               test-namespaces)))
             1
             0)))))))