|
@@ -1,12 +1,26 @@
|
|
|
local a = require "plenary.async_lib.tests"
|
|
|
local utils = require "lvim.utils"
|
|
|
local helpers = require "tests.lvim.helpers"
|
|
|
-local temp_dir = vim.loop.os_getenv "TEMP" or "/tmp"
|
|
|
-lvim.lsp.templates_dir = join_paths(temp_dir, "lvim", "tests", "artifacts")
|
|
|
+local spy = require "luassert.spy"
|
|
|
|
|
|
a.describe("lsp workflow", function()
|
|
|
- local Log = require "lvim.core.log"
|
|
|
- local logfile = Log:get_path()
|
|
|
+ before_each(function()
|
|
|
+ vim.cmd [[
|
|
|
+ let v:errmsg = ""
|
|
|
+ let v:errors = []
|
|
|
+ ]]
|
|
|
+ end)
|
|
|
+
|
|
|
+ after_each(function()
|
|
|
+ local errmsg = vim.fn.eval "v:errmsg"
|
|
|
+ local exception = vim.fn.eval "v:exception"
|
|
|
+ local errors = vim.fn.eval "v:errors"
|
|
|
+ assert.equal("", errmsg)
|
|
|
+ assert.equal("", exception)
|
|
|
+ assert.True(vim.tbl_isempty(errors))
|
|
|
+ end)
|
|
|
+
|
|
|
+ lvim.lsp.templates_dir = join_paths(get_cache_dir(), "artifacts")
|
|
|
|
|
|
a.it("should be able to delete ftplugin templates", function()
|
|
|
if utils.is_directory(lvim.lsp.templates_dir) then
|
|
@@ -19,35 +33,13 @@ a.describe("lsp workflow", function()
|
|
|
if utils.is_directory(lvim.lsp.templates_dir) then
|
|
|
assert.equal(vim.fn.delete(lvim.lsp.templates_dir, "rf"), 0)
|
|
|
end
|
|
|
- require("lvim.lsp").setup()
|
|
|
-
|
|
|
- -- we need to delay this check until the generation is completed
|
|
|
- vim.schedule(function()
|
|
|
- assert.True(utils.is_directory(lvim.lsp.templates_dir))
|
|
|
- end)
|
|
|
- end)
|
|
|
|
|
|
- a.it("should not attempt to re-generate ftplugin templates", function()
|
|
|
- lvim.log.level = "debug"
|
|
|
-
|
|
|
- local plugins = require "lvim.plugins"
|
|
|
- require("lvim.plugin-loader").load { plugins, lvim.plugins }
|
|
|
-
|
|
|
- if utils.is_file(logfile) then
|
|
|
- assert.equal(vim.fn.delete(logfile), 0)
|
|
|
- end
|
|
|
-
|
|
|
- assert.True(utils.is_directory(lvim.lsp.templates_dir))
|
|
|
require("lvim.lsp").setup()
|
|
|
|
|
|
- -- we need to delay this check until the log gets populated
|
|
|
- vim.schedule(function()
|
|
|
- assert.False(helpers.log_contains "templates")
|
|
|
- end)
|
|
|
+ assert.True(utils.is_directory(lvim.lsp.templates_dir))
|
|
|
end)
|
|
|
|
|
|
a.it("should not include blacklisted servers in the generated templates", function()
|
|
|
- assert.True(utils.is_directory(lvim.lsp.templates_dir))
|
|
|
require("lvim.lsp").setup()
|
|
|
|
|
|
for _, file in ipairs(vim.fn.glob(lvim.lsp.templates_dir .. "/*.lua", 1, 1)) do
|
|
@@ -59,7 +51,6 @@ a.describe("lsp workflow", function()
|
|
|
end)
|
|
|
|
|
|
a.it("should only include one server per generated template", function()
|
|
|
- assert.True(utils.is_directory(lvim.lsp.templates_dir))
|
|
|
require("lvim.lsp").setup()
|
|
|
|
|
|
for _, file in ipairs(vim.fn.glob(lvim.lsp.templates_dir .. "/*.lua", 1, 1)) do
|
|
@@ -78,4 +69,14 @@ a.describe("lsp workflow", function()
|
|
|
assert.equal(err_msg, "")
|
|
|
end
|
|
|
end)
|
|
|
+
|
|
|
+ a.it("should not attempt to re-generate ftplugin templates", function()
|
|
|
+ local s = spy.on(require "lvim.lsp.templates", "generate_templates")
|
|
|
+ local plugins = require "lvim.plugins"
|
|
|
+ require("lvim.plugin-loader").load { plugins, lvim.plugins }
|
|
|
+
|
|
|
+ require("lvim.lsp").setup()
|
|
|
+ assert.spy(s).was_not_called()
|
|
|
+ s:revert()
|
|
|
+ end)
|
|
|
end)
|