aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2022-04-30 02:22:30 -0700
committerGitHub <noreply@github.com>2022-04-30 11:22:30 +0200
commitc618b314c6a266806edf692122b16ba9ff7a8e10 (patch)
tree8e78db8393fc2a567fd3515c73a60f6041a2a6bb /test
parentdf09e03cf74337675751c3240069a26aec75fa3b (diff)
downloadrneovim-c618b314c6a266806edf692122b16ba9ff7a8e10.tar.gz
rneovim-c618b314c6a266806edf692122b16ba9ff7a8e10.tar.bz2
rneovim-c618b314c6a266806edf692122b16ba9ff7a8e10.zip
chore(lsp): remove capabilities sanitization (#17814)
* feat(lsp)!: remove capabilities sanitization Users must now access client.server_capabilities which matches the same structure as the protocol. https://microsoft.github.io/language-server-protocol/specification client.resolved_capabilities is no longer used to gate capabilities, and will be removed in a future release. BREAKING CHANGE Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
Diffstat (limited to 'test')
-rw-r--r--test/functional/fixtures/fake-lsp-server.lua51
-rw-r--r--test/functional/plugin/lsp_spec.lua72
2 files changed, 77 insertions, 46 deletions
diff --git a/test/functional/fixtures/fake-lsp-server.lua b/test/functional/fixtures/fake-lsp-server.lua
index 3375a5dda9..bd59e5dc1f 100644
--- a/test/functional/fixtures/fake-lsp-server.lua
+++ b/test/functional/fixtures/fake-lsp-server.lua
@@ -100,8 +100,12 @@ local tests = {}
function tests.basic_init()
skeleton {
- on_init = function(_params)
- return { capabilities = {} }
+ on_init = function(_)
+ return {
+ capabilities = {
+ textDocumentSync = protocol.TextDocumentSyncKind.None;
+ }
+ }
end;
body = function()
notify('test')
@@ -132,8 +136,11 @@ function tests.prepare_rename_nil()
skeleton {
on_init = function()
return { capabilities = {
- renameProvider = true,
- } }
+ renameProvider = {
+ prepareProvider = true
+ }
+ }
+ }
end;
body = function()
notify('start')
@@ -149,8 +156,11 @@ function tests.prepare_rename_placeholder()
skeleton {
on_init = function()
return { capabilities = {
- renameProvider = true,
- } }
+ renameProvider = {
+ prepareProvider = true
+ }
+ }
+ }
end;
body = function()
notify('start')
@@ -170,8 +180,11 @@ function tests.prepare_rename_range()
skeleton {
on_init = function()
return { capabilities = {
- renameProvider = true,
- } }
+ renameProvider = {
+ prepareProvider = true
+ }
+ }
+ }
end;
body = function()
notify('start')
@@ -193,9 +206,13 @@ end
function tests.prepare_rename_error()
skeleton {
on_init = function()
- return { capabilities = {
- renameProvider = true,
- } }
+ return {
+ capabilities = {
+ renameProvider = {
+ prepareProvider = true
+ },
+ }
+ }
end;
body = function()
notify('start')
@@ -219,6 +236,7 @@ function tests.basic_check_capabilities()
return {
capabilities = {
textDocumentSync = protocol.TextDocumentSyncKind.Full;
+ codeLensProvider = false
}
}
end;
@@ -237,6 +255,7 @@ function tests.capabilities_for_client_supports_method()
textDocumentSync = protocol.TextDocumentSyncKind.Full;
completionProvider = true;
hoverProvider = true;
+ renameProvider = false;
definitionProvider = false;
referencesProvider = false;
codeLensProvider = { resolveProvider = true; };
@@ -544,7 +563,15 @@ function tests.basic_check_buffer_open_and_change_incremental()
assert_eq(params.capabilities, expected_capabilities)
return {
capabilities = {
- textDocumentSync = protocol.TextDocumentSyncKind.Incremental;
+ textDocumentSync = {
+ openClose = true,
+ change = protocol.TextDocumentSyncKind.Incremental,
+ willSave = true,
+ willSaveWaitUntil = true,
+ save = {
+ includeText = true,
+ }
+ }
}
}
end;
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua
index 03ed167bac..6cde96ceaf 100644
--- a/test/functional/plugin/lsp_spec.lua
+++ b/test/functional/plugin/lsp_spec.lua
@@ -289,7 +289,7 @@ describe('LSP', function()
test_rpc_server {
test_name = "basic_init";
on_init = function(client)
- eq(0, client.resolved_capabilities().text_document_did_change)
+ eq(0, client.server_capabilities().textDocumentSync.change)
client.request('shutdown')
client.notify('exit')
client.stop()
@@ -407,10 +407,9 @@ describe('LSP', function()
on_init = function(client)
client.stop()
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_save)
- eq(false, client.resolved_capabilities().code_lens)
- eq(false, client.resolved_capabilities().code_lens_resolve)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq({includeText = false}, client.server_capabilities().textDocumentSync.save)
+ eq(false, client.server_capabilities().codeLensProvider)
end;
on_exit = function(code, signal)
eq(0, code, "exit code", fake_lsp_logfile)
@@ -430,14 +429,19 @@ describe('LSP', function()
test_name = "capabilities_for_client_supports_method";
on_init = function(client)
client.stop()
- local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().completion)
- eq(true, client.resolved_capabilities().hover)
- eq(false, client.resolved_capabilities().goto_definition)
- eq(false, client.resolved_capabilities().rename)
- eq(true, client.resolved_capabilities().code_lens)
- eq(true, client.resolved_capabilities().code_lens_resolve)
+ local expected_sync_capabilities = {
+ change = 1,
+ openClose = true,
+ save = { includeText = false },
+ willSave = false,
+ willSaveWaitUntil = false,
+ }
+ eq(expected_sync_capabilities, client.server_capabilities().textDocumentSync)
+ eq(true, client.server_capabilities().completionProvider)
+ eq(true, client.server_capabilities().hoverProvider)
+ eq(false, client.server_capabilities().definitionProvider)
+ eq(false, client.server_capabilities().renameProvider)
+ eq(true, client.server_capabilities().codeLensProvider.resolveProvider)
-- known methods for resolved capabilities
eq(true, client.supports_method("textDocument/hover"))
@@ -720,8 +724,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
client.notify('finish')
end;
on_exit = function(code, signal)
@@ -761,8 +765,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(not lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID), "Shouldn't attach twice")
]]
@@ -804,8 +808,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -847,8 +851,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -896,8 +900,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local full_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(full_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(full_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -947,8 +951,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local sync_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Incremental")
- eq(sync_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(sync_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -998,8 +1002,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local sync_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Incremental")
- eq(sync_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(sync_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -1047,8 +1051,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local sync_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Incremental")
- eq(sync_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(sync_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -1091,8 +1095,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local sync_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(sync_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(sync_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -1142,8 +1146,8 @@ describe('LSP', function()
on_init = function(_client)
client = _client
local sync_kind = exec_lua("return require'vim.lsp.protocol'.TextDocumentSyncKind.Full")
- eq(sync_kind, client.resolved_capabilities().text_document_did_change)
- eq(true, client.resolved_capabilities().text_document_open_close)
+ eq(sync_kind, client.server_capabilities().textDocumentSync.change)
+ eq(true, client.server_capabilities().textDocumentSync.openClose)
exec_lua [[
assert(lsp.buf_attach_client(BUFFER, TEST_RPC_CLIENT_ID))
]]
@@ -2583,7 +2587,7 @@ describe('LSP', function()
test_name = test.name;
on_init = function(_client)
client = _client
- eq(true, client.resolved_capabilities().rename)
+ eq(true, client.server_capabilities().renameProvider.prepareProvider)
end;
on_setup = function()
exec_lua([=[