From e59381ab5fe99cfaab9fffc4f9ee5148877971c6 Mon Sep 17 00:00:00 2001 From: Garrett Hopper Date: Wed, 7 May 2025 23:09:33 -0500 Subject: [PATCH] Add Clojure indent tests --- tests/indent/clojure/test.cljc | 137 +++++++++++++++++++++++++++++++++ tests/indent/clojure_spec.lua | 51 ++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 tests/indent/clojure/test.cljc create mode 100644 tests/indent/clojure_spec.lua diff --git a/tests/indent/clojure/test.cljc b/tests/indent/clojure/test.cljc new file mode 100644 index 000000000..ebfdae4c4 --- /dev/null +++ b/tests/indent/clojure/test.cljc @@ -0,0 +1,137 @@ +(identity + true) + +(:k + {:k 1}) + +(+ + 1 + 2) + +( + + + 1 + 2) + +(let [a 1 + b 2] + true) + +[1 2 3 + 4 5 6] + +{:a 1 + :b 2} + +{ + :a 1 + :b 2} + +#:a + {:a 1 + :b 2} + +#{1 2 + 3 4} + +#{ + 1 2 + 3 4} + +(defn + _ + [] + true) + +(defn _ + [] + true) + +(defn _ + [a + b] + true) + +(defn _ [a + b] + true) + +(defn _ [ + a] + true) + +(defn _ [{a :a + b :b}] + true) + +(defn _ + ([x] + true) + ([x + y] + true)) + +#(* + %1 + %2) + +#( + * + %1 + %2) + +#?( + :clj (+ 1 1)) + +#?@( + :clj (+ 1 1)) + +' + () + +` + () + +~ + () + +#a + () + +@ + (atom nil) + +~@ + () + +#' + () + +#_ + () + +#= + () + +'#= + (+ 1 1) + +^:a +(+ 1 + 2 3) + +^:a +[1 2 + 3 4] + +^:a +{:a 1 + :b 2} + +^:a +^[1 2 (+ + 1 2) + 3 4] +^{:a 1 + :b 2} +{} diff --git a/tests/indent/clojure_spec.lua b/tests/indent/clojure_spec.lua new file mode 100644 index 000000000..35fd524ce --- /dev/null +++ b/tests/indent/clojure_spec.lua @@ -0,0 +1,51 @@ +local Runner = require("tests.indent.common").Runner +local XFAIL = require("tests.indent.common").XFAIL + +local run = Runner:new(it, "tests/indent/clojure", { + tabstop = 2, + shiftwidth = 2, + softtabstop = 0, + expandtab = true, +}) + +describe("indent Clojure:", function() + describe("whole file:", function() + run:whole_file(".", { + expected_failures = {}, + }) + end) + + describe("new line:", function() + run:new_line("test.cljc", { on_line = 1, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 4, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 11, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 16, text = ":x", indent = 6 }) + run:new_line("test.cljc", { on_line = 20, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 23, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 31, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 34, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 34, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 47, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 51, text = ":x", indent = 3 }) + run:new_line("test.cljc", { on_line = 55, text = ":x", indent = 9 }) + run:new_line("test.cljc", { on_line = 63, text = ":x", indent = 10 }) + run:new_line("test.cljc", { on_line = 68, text = ":x", indent = 3 }) + run:new_line("test.cljc", { on_line = 70, text = ":x", indent = 4 }) + run:new_line("test.cljc", { on_line = 74, text = ":x", indent = 3 }) + run:new_line("test.cljc", { on_line = 83, text = ":x", indent = 3 }) + run:new_line("test.cljc", { on_line = 86, text = ":x", indent = 4 }) + run:new_line("test.cljc", { on_line = 89, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 92, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 95, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 98, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 101, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 104, text = ":x", indent = 1 }) + run:new_line("test.cljc", { on_line = 107, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 110, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 113, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 116, text = ":x", indent = 3 }) + run:new_line("test.cljc", { on_line = 120, text = ":x", indent = 2 }) + run:new_line("test.cljc", { on_line = 132, text = ":x", indent = 8 }) + run:new_line("test.cljc", { on_line = 135, text = ":x", indent = 2 }) + end) +end)