mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
Merge pull request #32871 from ofseed/test-lsp
test(lsp): add some tests for LSP bugs
This commit is contained in:
@ -7,6 +7,7 @@ local eq = t.eq
|
||||
local dedent = t.dedent
|
||||
local exec_lua = n.exec_lua
|
||||
local insert = n.insert
|
||||
local feed = n.feed
|
||||
local api = n.api
|
||||
|
||||
local clear_notrace = t_lsp.clear_notrace
|
||||
@ -369,6 +370,27 @@ test text
|
||||
screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
|
||||
end)
|
||||
|
||||
it('refreshes hints on request', function()
|
||||
exec_lua([[vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })]])
|
||||
screen:expect({ grid = grid_with_inlay_hints })
|
||||
feed('kibefore <Esc>')
|
||||
screen:expect([[
|
||||
before^ {1:01234}test text |
|
||||
|*2
|
||||
]])
|
||||
exec_lua(function()
|
||||
vim.lsp.inlay_hint.on_refresh(
|
||||
nil,
|
||||
nil,
|
||||
{ method = 'workspace/inlayHint/refresh', client_id = client_id }
|
||||
)
|
||||
end)
|
||||
screen:expect([[
|
||||
{1:01234}before^ test text |
|
||||
|*2
|
||||
]])
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
api.nvim_exec_autocmds('VimLeavePre', { modeline = false })
|
||||
end)
|
||||
|
@ -600,6 +600,39 @@ describe('semantic token highlighting', function()
|
||||
}
|
||||
end)
|
||||
|
||||
it('resets active request after receiving error responses from the server', function()
|
||||
local error = { code = -32801, message = 'Content modified' }
|
||||
exec_lua(function()
|
||||
_G.server2 = _G._create_server({
|
||||
capabilities = {
|
||||
semanticTokensProvider = {
|
||||
full = { delta = false },
|
||||
},
|
||||
},
|
||||
handlers = {
|
||||
-- There is same logic for handling nil responses and error responses,
|
||||
-- so keep responses not nil.
|
||||
--
|
||||
-- if an error response was not be handled, this test will hang on here.
|
||||
--- @param callback function
|
||||
['textDocument/semanticTokens/full'] = function(_, _, callback)
|
||||
callback(error, vim.fn.json_decode(response))
|
||||
end,
|
||||
--- @param callback function
|
||||
['textDocument/semanticTokens/full/delta'] = function(_, _, callback)
|
||||
callback(error, vim.fn.json_decode(response))
|
||||
end,
|
||||
},
|
||||
})
|
||||
return vim.lsp.start({ name = 'dummy', cmd = _G.server2.cmd })
|
||||
end)
|
||||
screen:expect([[
|
||||
^ |
|
||||
{1:~ }|*14
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
||||
it('does not send delta requests if not supported by server', function()
|
||||
insert(text)
|
||||
exec_lua(function()
|
||||
|
Reference in New Issue
Block a user