(ns com.tailrecursion.test-runner
"Run semantic and generative suites; fail the process on any failing check."
(:require [clojure.test :as test]))
(def suites
'[com.tailrecursion.nanopass.language-test
com.tailrecursion.nanopass.pass-test
com.tailrecursion.blacktide.machine-test
com.tailrecursion.blacktide.backend-test
com.tailrecursion.blacktide.numeric-test
com.tailrecursion.blacktide.generated-test
com.tailrecursion.blacktide.aot-test
com.tailrecursion.blacktide.package-test
com.tailrecursion.blacktide.graph-test
com.tailrecursion.blacktide.source-test
com.tailrecursion.blacktide.subset-test
com.tailrecursion.blacktide.collections-test
com.tailrecursion.blacktide.assignment-test
com.tailrecursion.blacktide.control-test
com.tailrecursion.blacktide.jumps-test
com.tailrecursion.blacktide.jvm-test
com.tailrecursion.blacktide.loops-test
com.tailrecursion.blacktide.source-loops-test
com.tailrecursion.blacktide.source-values-test
com.tailrecursion.blacktide.case-test
com.tailrecursion.blacktide.lookup-test
com.tailrecursion.blacktide.invocation-test
com.tailrecursion.blacktide.interop-values-test
com.tailrecursion.blacktide.algorithms-test])
(defn -main [& selected]
(let [suites (if (seq selected) (mapv symbol selected) suites)]
(doseq [suite suites] (require suite))
(let [{:keys [fail error]} (apply test/run-tests suites)]
(shutdown-agents)
(when (pos? (+ fail error)) (System/exit 1)))))