diff options
author | Gregory Anders <greg@gpanders.com> | 2024-11-25 11:48:11 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-25 11:48:11 -0600 |
commit | 29c72cdf4a4913c152f037865cb28c78a8930340 (patch) | |
tree | f55d404286962095163e701c5942beb3d7496628 /test/functional/plugin/lsp_spec.lua | |
parent | 8d55cc218cfed54136677398ca76c45987b15f29 (diff) | |
download | rneovim-29c72cdf4a4913c152f037865cb28c78a8930340.tar.gz rneovim-29c72cdf4a4913c152f037865cb28c78a8930340.tar.bz2 rneovim-29c72cdf4a4913c152f037865cb28c78a8930340.zip |
fix(lsp): retrigger diagnostics request on server cancellation (#31345)
Co-authored-by: Jesse <github@jessebakker.com>
Diffstat (limited to 'test/functional/plugin/lsp_spec.lua')
-rw-r--r-- | test/functional/plugin/lsp_spec.lua | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua index 332a1a48bb..e30d1ba411 100644 --- a/test/functional/plugin/lsp_spec.lua +++ b/test/functional/plugin/lsp_spec.lua @@ -1066,6 +1066,39 @@ describe('LSP', function() } end) + it('should forward ServerCancelled to callback', function() + local expected_handlers = { + { NIL, {}, { method = 'finish', client_id = 1 } }, + { + { code = -32802 }, + NIL, + { method = 'error_code_test', bufnr = 1, client_id = 1, version = 0 }, + }, + } + local client --- @type vim.lsp.Client + test_rpc_server { + test_name = 'check_forward_server_cancelled', + on_init = function(_client) + _client:request('error_code_test') + client = _client + end, + on_exit = function(code, signal) + eq(0, code, 'exit code') + eq(0, signal, 'exit signal') + eq(0, #expected_handlers, 'did not call expected handler') + end, + on_handler = function(err, _, ctx) + eq(table.remove(expected_handlers), { err, _, ctx }, 'expected handler') + if ctx.method ~= 'finish' then + client:notify('finish') + end + if ctx.method == 'finish' then + client:stop() + end + end, + } + end) + it('should forward ContentModified to callback', function() local expected_handlers = { { NIL, {}, { method = 'finish', client_id = 1 } }, @@ -1089,7 +1122,6 @@ describe('LSP', function() end, on_handler = function(err, _, ctx) eq(table.remove(expected_handlers), { err, _, ctx }, 'expected handler') - -- if ctx.method == 'error_code_test' then client.notify("finish") end if ctx.method ~= 'finish' then client:notify('finish') end |