From 9195818953cc89c190ead3f1ce5ef955dc54f9c6 Mon Sep 17 00:00:00 2001 From: Konrad Mrożek <konrad.mrozek@shareablee.com> Date: Mon, 05 Jun 2023 15:42:30 +0000 Subject: [PATCH] First version of compiler --- TODO.org | 3 +++ compiler/clojure-test.vim | 17 +++++++++++++++++ clojure/deps.edn | 1 + clojure/src/test_runner.clj | 28 ++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 0 deletions(-) diff --git a/TODO.org b/TODO.org new file mode 100644 index 0000000..a5c7a63 --- /dev/null +++ b/TODO.org @@ -0,0 +1,3 @@ +* TODO + - [ ] Handle output codes properly + - [ ] Add errorformat compatible with clojure.test diff --git a/clojure/deps.edn b/clojure/deps.edn new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/clojure/deps.edn @@ -0,0 +1 @@ +{} diff --git a/clojure/src/test_runner.clj b/clojure/src/test_runner.clj new file mode 100644 index 0000000..2868c26 --- /dev/null +++ b/clojure/src/test_runner.clj @@ -0,0 +1,28 @@ +(binding [*compile-files* true] + (require 'clojure.test)) + +(ns test-runner + (:require [clojure.test :as t])) + +(when-not (.exists (java.io.File. "classes")) + (.. (java.io.File. "classes") mkdir)) + +(defmulti emacs-report :type) + +(defmethod emacs-report :pass + [m] + (t/with-test-out + (println "PASS:"))) + +(defn -main [& [test-file]] + (binding [*compile-files* true] + (compile 'test-runner) + (let [test-namespaces (->> (or test-file "test") + (java.io.File.) + (file-seq) + (filter (memfn isFile)) + (map (memfn getPath)) + (map load-file) + (map (comp :ns meta)) + (into #{}))] + (run! (fn [n] (t/run-tests n)) test-namespaces)))) diff --git a/compiler/clojure-test.vim b/compiler/clojure-test.vim new file mode 100644 index 0000000..02ea189 --- /dev/null +++ b/compiler/clojure-test.vim @@ -0,0 +1,17 @@ +vim9script +if exists("g:current_compiler") + finish +endif + +g:current_compiler = "clojure-test" + +if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +echomsg expand('<sfile>:p:h:h') + +var clojure_test_deps = "'{:aliases {:clojure-test-vim {:extra-paths [\"classes\"] :extra-deps {mrroman/clojure-test.vim {:local/root \"" .. expand('<sfile>:p:h:h') .. "/clojure\"}}}}}'" + +execute 'CompilerSet makeprg=clojure\ -Sdeps\ ' .. escape(clojure_test_deps, ' \|"') .. '\ -Mtest:clojure-test-vim\ -m\ test-runner' +CompilerSet errorformat& -- Gitblit v1.9.3