From d4343392ab84570ff5254a89ffb87a933eea8c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= Date: Sun, 16 Jun 2024 00:50:50 +0200 Subject: [PATCH] Format '--check' errors so that tooling can detect them --- src/fennel-ls.fnl | 2 +- test/check.fnl | 18 ++++++++++++++++++ test/init.fnl | 3 ++- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/check.fnl diff --git a/src/fennel-ls.fnl b/src/fennel-ls.fnl index 4629fe6..9981218 100644 --- a/src/fennel-ls.fnl +++ b/src/fennel-ls.fnl @@ -20,7 +20,7 @@ (let [file (files.get-by-uri server (.. "file://" filename))] (lint.check server file) (each [_ {: message :range {: start}} (ipairs file.diagnostics)] - (print (: "%s:%s:%s %s" :format filename + (print (: "%s:%s:%s: %s" :format filename ;; LSP line numbers are zero-indexed, but Emacs and Vim both use ;; 1-indexing for this. (+ (or start.line 0) 1) (or start.character "?") message))) diff --git a/test/check.fnl b/test/check.fnl new file mode 100644 index 0000000..ce510bc --- /dev/null +++ b/test/check.fnl @@ -0,0 +1,18 @@ +(local faith (require :faith)) + +;; TODO refactor fennel-ls.check to avoid running end-to-end +;; (but keep/write at least some end-to-end tests) +(fn test-check [] + (let [input-file-name (os.tmpname)] + (doto (io.open input-file-name :w) + (: :write "(local x 1)") + (: :close)) + (let [output-file (io.popen (.. "./fennel-ls --check " + input-file-name) + :r)] + (faith.= (.. input-file-name ":1:7: unused definition: x\n") + (output-file:read :*a) ) + (os.remove input-file-name)) + nil)) + +{: test-check} diff --git a/test/init.fnl b/test/init.fnl index 439a242..4fd7b6c 100644 --- a/test/init.fnl +++ b/test/init.fnl @@ -24,4 +24,5 @@ :test.lint :test.code-action :test.rename - :test.misc]) + :test.misc + :test.check])