lsp: make the command error message more detailed (#11633)

* lsp.lua: make the error message more detailed

* test: add lsp._cmd_part test
This commit is contained in:
Hirokazu Hata
2020-05-26 21:55:45 +09:00
committed by GitHub
parent 618e9a7692
commit 15b762761a
2 changed files with 30 additions and 14 deletions

View File

@@ -122,20 +122,20 @@ local function validate_encoding(encoding)
end
function lsp._cmd_parts(input)
local cmd, cmd_args
if vim.tbl_islist(input) then
cmd = input[1]
cmd_args = {}
vim.validate{cmd={
input,
function() return vim.tbl_islist(input) end,
"list"}}
local cmd = input[1]
local cmd_args = {}
-- Don't mutate our input.
for i, v in ipairs(input) do
assert(type(v) == 'string', "input arguments must be strings")
vim.validate{["cmd argument"]={v, "s"}}
if i > 1 then
table.insert(cmd_args, v)
end
end
else
error("cmd type must be list.")
end
return cmd, cmd_args
end
@@ -524,7 +524,7 @@ function lsp.start_client(config)
function client.request(method, params, callback, bufnr)
if not callback then
callback = resolve_callback(method)
or error("not found: request callback for client "..client.name)
or error(string.format("not found: %q request callback for client %q.", method, client.name))
end
local _ = log.debug() and log.debug(log_prefix, "client.request", client_id, method, params, callback, bufnr)
-- TODO keep these checks or just let it go anyway?

View File

@@ -6,6 +6,7 @@ local buf_lines = helpers.buf_lines
local dedent = helpers.dedent
local exec_lua = helpers.exec_lua
local eq = helpers.eq
local pcall_err = helpers.pcall_err
local pesc = helpers.pesc
local insert = helpers.insert
local retry = helpers.retry
@@ -705,7 +706,6 @@ describe('LSP', function()
end;
}
end)
end)
describe("parsing tests", function()
@@ -733,7 +733,23 @@ describe('LSP', function()
end;
}
end)
end)
describe('lsp._cmd_parts test', function()
local function _cmd_parts(input)
return exec_lua([[
lsp = require('vim.lsp')
return lsp._cmd_parts(...)
]], input)
end
it('should valid cmd argument', function()
eq(true, pcall(_cmd_parts, {"nvim"}))
eq(true, pcall(_cmd_parts, {"nvim", "--head"}))
end)
it('should invalid cmd argument', function()
eq('Error executing lua: .../shared.lua: cmd: expected list, got nvim', pcall_err(_cmd_parts, "nvim"))
eq('Error executing lua: .../shared.lua: cmd argument: expected string, got number', pcall_err(_cmd_parts, {"nvim", 1}))
end)
end)
end)