aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
commitff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch)
tree729bbcb92231538fa61dab6c3d890b025484b7f5 /test/functional/plugin
parent376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff)
parent28c04948a1c887a1cc0cb64de79fa32631700466 (diff)
downloadrneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'test/functional/plugin')
-rw-r--r--test/functional/plugin/ccomplete_spec.lua16
-rw-r--r--test/functional/plugin/cfilter_spec.lua12
-rw-r--r--test/functional/plugin/editorconfig_spec.lua34
-rw-r--r--test/functional/plugin/health_spec.lua126
-rw-r--r--test/functional/plugin/lsp/codelens_spec.lua11
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua10
-rw-r--r--test/functional/plugin/lsp/diagnostic_spec.lua26
-rw-r--r--test/functional/plugin/lsp/handler_spec.lua11
-rw-r--r--test/functional/plugin/lsp/incremental_sync_spec.lua13
-rw-r--r--test/functional/plugin/lsp/inlay_hint_spec.lua122
-rw-r--r--test/functional/plugin/lsp/semantic_tokens_spec.lua194
-rw-r--r--test/functional/plugin/lsp/snippet_spec.lua12
-rw-r--r--test/functional/plugin/lsp/testutil.lua (renamed from test/functional/plugin/lsp/helpers.lua)44
-rw-r--r--test/functional/plugin/lsp/utils_spec.lua13
-rw-r--r--test/functional/plugin/lsp_spec.lua1011
-rw-r--r--test/functional/plugin/man_spec.lua41
-rw-r--r--test/functional/plugin/matchparen_spec.lua15
-rw-r--r--test/functional/plugin/msgpack_spec.lua18
-rw-r--r--test/functional/plugin/shada_spec.lua18
-rw-r--r--test/functional/plugin/tohtml_spec.lua17
-rw-r--r--test/functional/plugin/tutor_spec.lua175
-rw-r--r--test/functional/plugin/vim_syntax_spec.lua13
22 files changed, 1379 insertions, 573 deletions
diff --git a/test/functional/plugin/ccomplete_spec.lua b/test/functional/plugin/ccomplete_spec.lua
index 903f16fc73..4c4c5e9444 100644
--- a/test/functional/plugin/ccomplete_spec.lua
+++ b/test/functional/plugin/ccomplete_spec.lua
@@ -1,10 +1,12 @@
-local helpers = require('test.functional.helpers')(after_each)
-local clear = helpers.clear
-local command = helpers.command
-local eq = helpers.eq
-local eval = helpers.eval
-local feed = helpers.feed
-local write_file = helpers.write_file
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local clear = n.clear
+local command = n.command
+local eq = t.eq
+local eval = n.eval
+local feed = n.feed
+local write_file = t.write_file
describe('ccomplete#Complete', function()
setup(function()
diff --git a/test/functional/plugin/cfilter_spec.lua b/test/functional/plugin/cfilter_spec.lua
index 37261d59df..220404a934 100644
--- a/test/functional/plugin/cfilter_spec.lua
+++ b/test/functional/plugin/cfilter_spec.lua
@@ -1,8 +1,10 @@
-local helpers = require('test.functional.helpers')(after_each)
-local clear = helpers.clear
-local command = helpers.command
-local eq = helpers.eq
-local fn = helpers.fn
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local clear = n.clear
+local command = n.command
+local eq = t.eq
+local fn = n.fn
describe('cfilter.lua', function()
before_each(function()
diff --git a/test/functional/plugin/editorconfig_spec.lua b/test/functional/plugin/editorconfig_spec.lua
index 115c28fbf6..839a723405 100644
--- a/test/functional/plugin/editorconfig_spec.lua
+++ b/test/functional/plugin/editorconfig_spec.lua
@@ -1,14 +1,18 @@
-local helpers = require('test.functional.helpers')(after_each)
-local clear = helpers.clear
-local command = helpers.command
-local eq = helpers.eq
-local pathsep = helpers.get_pathsep()
-local fn = helpers.fn
-local api = helpers.api
-local exec_lua = helpers.exec_lua
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local clear = n.clear
+local command = n.command
+local eq = t.eq
+local pathsep = n.get_pathsep()
+local fn = n.fn
+local api = n.api
+local exec_lua = n.exec_lua
local testdir = 'Xtest-editorconfig'
+--- @param name string
+--- @param expected table<string,any>
local function test_case(name, expected)
local filename = testdir .. pathsep .. name
command('edit ' .. filename)
@@ -18,8 +22,8 @@ local function test_case(name, expected)
end
setup(function()
- helpers.mkdir_p(testdir)
- helpers.write_file(
+ n.mkdir_p(testdir)
+ t.write_file(
testdir .. pathsep .. '.editorconfig',
[[
root = true
@@ -94,7 +98,7 @@ setup(function()
end)
teardown(function()
- helpers.rmdir(testdir)
+ n.rmdir(testdir)
end)
describe('editorconfig', function()
@@ -176,18 +180,18 @@ But not this one
-- luacheck: pop
local trimmed = untrimmed:gsub('%s+\n', '\n')
- helpers.write_file(filename, untrimmed)
+ t.write_file(filename, untrimmed)
command('edit ' .. filename)
command('write')
command('bdelete')
- eq(trimmed, helpers.read_file(filename))
+ eq(trimmed, t.read_file(filename))
filename = testdir .. pathsep .. 'no_trim.txt'
- helpers.write_file(filename, untrimmed)
+ t.write_file(filename, untrimmed)
command('edit ' .. filename)
command('write')
command('bdelete')
- eq(untrimmed, helpers.read_file(filename))
+ eq(untrimmed, t.read_file(filename))
end)
it('sets textwidth', function()
diff --git a/test/functional/plugin/health_spec.lua b/test/functional/plugin/health_spec.lua
index 8564ec7c9b..9c7c953fb0 100644
--- a/test/functional/plugin/health_spec.lua
+++ b/test/functional/plugin/health_spec.lua
@@ -1,14 +1,18 @@
-local helpers = require('test.functional.helpers')(after_each)
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
local Screen = require('test.functional.ui.screen')
-local clear = helpers.clear
-local curbuf_contents = helpers.curbuf_contents
-local command = helpers.command
-local eq, neq, matches = helpers.eq, helpers.neq, helpers.matches
-local getcompletion = helpers.fn.getcompletion
-local insert = helpers.insert
-local source = helpers.source
-local exec_lua = helpers.exec_lua
+local clear = n.clear
+local curbuf_contents = n.curbuf_contents
+local command = n.command
+local eq, matches = t.eq, t.matches
+local getcompletion = n.fn.getcompletion
+local insert = n.insert
+local exec_lua = n.exec_lua
+local source = n.source
+local assert_alive = n.assert_alive
+local fn = n.fn
+local api = n.api
describe(':checkhealth', function()
it('detects invalid $VIMRUNTIME', function()
@@ -19,6 +23,7 @@ describe(':checkhealth', function()
eq(false, status)
eq('Invalid $VIMRUNTIME: bogus', string.match(err, 'Invalid.*'))
end)
+
it("detects invalid 'runtimepath'", function()
clear()
command('set runtimepath=bogus')
@@ -26,19 +31,29 @@ describe(':checkhealth', function()
eq(false, status)
eq("Invalid 'runtimepath'", string.match(err, 'Invalid.*'))
end)
+
it('detects invalid $VIM', function()
clear()
-- Do this after startup, otherwise it just breaks $VIMRUNTIME.
command("let $VIM='zub'")
- command('checkhealth nvim')
+ command('checkhealth vim.health')
matches('ERROR $VIM .* zub', curbuf_contents())
end)
+
it('completions can be listed via getcompletion()', function()
clear()
- eq('nvim', getcompletion('nvim', 'checkhealth')[1])
- eq('provider.clipboard', getcompletion('prov', 'checkhealth')[1])
+ eq('vim.deprecated', getcompletion('vim', 'checkhealth')[1])
+ eq('vim.provider', getcompletion('vim.prov', 'checkhealth')[1])
eq('vim.lsp', getcompletion('vim.ls', 'checkhealth')[1])
- neq('vim', getcompletion('^vim', 'checkhealth')[1]) -- should not complete vim.health
+ end)
+
+ it('completion checks for vim.health._complete() return type #28456', function()
+ clear()
+ exec_lua([[vim.health._complete = function() return 1 end]])
+ eq({}, getcompletion('', 'checkhealth'))
+ exec_lua([[vim.health._complete = function() return { 1 } end]])
+ eq({}, getcompletion('', 'checkhealth'))
+ assert_alive()
end)
end)
@@ -52,7 +67,7 @@ describe('health.vim', function()
describe(':checkhealth', function()
it('functions report_*() render correctly', function()
command('checkhealth full_render')
- helpers.expect([[
+ n.expect([[
==============================================================================
test_plug.full_render: require("test_plug.full_render.health").check()
@@ -75,7 +90,7 @@ describe('health.vim', function()
it('concatenates multiple reports', function()
command('checkhealth success1 success2 test_plug')
- helpers.expect([[
+ n.expect([[
==============================================================================
test_plug: require("test_plug.health").check()
@@ -105,7 +120,7 @@ describe('health.vim', function()
it('lua plugins submodules', function()
command('checkhealth test_plug.submodule')
- helpers.expect([[
+ n.expect([[
==============================================================================
test_plug.submodule: require("test_plug.submodule.health").check()
@@ -120,7 +135,7 @@ describe('health.vim', function()
it('... including empty reports', function()
command('checkhealth test_plug.submodule_empty')
- helpers.expect([[
+ n.expect([[
==============================================================================
test_plug.submodule_empty: require("test_plug.submodule_empty.health").check()
@@ -158,28 +173,10 @@ describe('health.vim', function()
}
end)
- it('fold healthchecks', function()
- local screen = Screen.new(50, 7)
- screen:attach()
- command('checkhealth foo success1')
- command('set nowrap laststatus=0')
- screen:expect {
- grid = [[
- ^ |
- ──────────────────────────────────────────────────|
- +WE 4 lines: foo: ·······························|
- ──────────────────────────────────────────────────|
- +-- 8 lines: test_plug.success1: require("test_pl|
- ~ |
- |
- ]],
- }
- end)
-
it('gracefully handles invalid healthcheck', function()
command('checkhealth non_existent_healthcheck')
-- luacheck: ignore 613
- helpers.expect([[
+ n.expect([[
==============================================================================
non_existent_healthcheck:
@@ -191,7 +188,7 @@ describe('health.vim', function()
it('does not use vim.health as a healtcheck', function()
-- vim.health is not a healthcheck
command('checkhealth vim')
- helpers.expect([[
+ n.expect([[
ERROR: No healthchecks found.]])
end)
end)
@@ -218,6 +215,12 @@ describe(':checkhealth window', function()
it('opens directly if no buffer created', function()
local screen = Screen.new(50, 12)
+ screen:set_default_attr_ids {
+ [1] = { foreground = Screen.colors.Blue, bold = true },
+ [14] = { foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray },
+ [31] = { foreground = tonumber('0x6a0dad') },
+ [32] = { foreground = Screen.colors.PaleGreen2 },
+ }
screen:attach({ ext_multigrid = true })
command('checkhealth success1')
screen:expect {
@@ -227,16 +230,16 @@ describe(':checkhealth window', function()
[3:--------------------------------------------------]|
## grid 2
^ |
- ──────────────────────────────────────────────────|
- ──────────────────────────── |
- test_plug.success1: require("test_plug.success1. |
- health").check() |
+ {14:──────────────────────────────────────────────────}|
+ {14:────────────────────────────} |
+ {31:test_plug.success1: require("test_plug.success1. }|
+ {31:health").check()} |
|
- report 1 |
- - OK everything is fine |
+ {31:report 1} |
+ - {32:OK} everything is fine |
|
- report 2 |
- - OK nothing to see here |
+ {31:report 2} |
+ - {32:OK} nothing to see here |
## grid 3
|
]],
@@ -245,6 +248,12 @@ describe(':checkhealth window', function()
local function test_health_vsplit(left, emptybuf, mods)
local screen = Screen.new(50, 20)
+ screen:set_default_attr_ids {
+ [1] = { foreground = Screen.colors.Blue, bold = true },
+ [14] = { foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray },
+ [31] = { foreground = tonumber('0x6a0dad') },
+ [32] = { foreground = Screen.colors.PaleGreen2 },
+ }
screen:attach({ ext_multigrid = true })
if not emptybuf then
insert('hello')
@@ -257,24 +266,24 @@ describe(':checkhealth window', function()
[3:--------------------------------------------------]|
## grid 2
%s |
- ~ |*18
+ {1:~ }|*18
## grid 3
|
## grid 4
^ |
- ─────────────────────────|*3
- ─── |
- test_plug.success1: |
- require("test_plug. |
- success1.health").check()|
+ {14:─────────────────────────}|*3
+ {14:───} |
+ {31:test_plug.success1: }|
+ {31:require("test_plug. }|
+ {31:success1.health").check()}|
|
- report 1 |
- - OK everything is fine |
+ {31:report 1} |
+ - {32:OK} everything is fine |
|
- report 2 |
- - OK nothing to see here |
+ {31:report 2} |
+ - {32:OK} nothing to see here |
|
- ~ |*4
+ {1:~ }|*4
]]):format(
left and '[4:-------------------------]│[2:------------------------]|*19'
or '[2:------------------------]│[4:-------------------------]|*19',
@@ -304,6 +313,7 @@ describe(':checkhealth window', function()
local function test_health_split(top, emptybuf, mods)
local screen = Screen.new(50, 25)
screen:attach({ ext_multigrid = true })
+ screen._default_attr_ids = nil
if not emptybuf then
insert('hello')
end
@@ -368,7 +378,7 @@ describe(':checkhealth window', function()
it('opens in tab', function()
-- create an empty buffer called "my_buff"
- exec_lua 'vim.api.nvim_create_buf(false, true)'
+ api.nvim_create_buf(false, true)
command('file my_buff')
command('checkhealth success1')
-- define a function that collects all buffers in each tab
@@ -387,7 +397,7 @@ describe(':checkhealth window', function()
return buffs
endfunction
]])
- local buffers_per_tab = exec_lua('return vim.fn.CollectBuffersPerTab()')
+ local buffers_per_tab = fn.CollectBuffersPerTab()
eq(buffers_per_tab, { tab1 = { 'my_buff' }, tab2 = { 'health://' } })
end)
end)
diff --git a/test/functional/plugin/lsp/codelens_spec.lua b/test/functional/plugin/lsp/codelens_spec.lua
index 29daf7a066..cd20e95dd1 100644
--- a/test/functional/plugin/lsp/codelens_spec.lua
+++ b/test/functional/plugin/lsp/codelens_spec.lua
@@ -1,14 +1,15 @@
-local helpers = require('test.functional.helpers')(after_each)
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
-local exec_lua = helpers.exec_lua
-local eq = helpers.eq
+local exec_lua = n.exec_lua
+local eq = t.eq
describe('vim.lsp.codelens', function()
before_each(function()
- helpers.clear()
+ n.clear()
exec_lua('require("vim.lsp")')
end)
- after_each(helpers.clear)
+ after_each(n.clear)
it('on_codelens_stores_and_displays_lenses', function()
local fake_uri = 'file:///fake/uri'
diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua
index 655eb76be6..2798d57381 100644
--- a/test/functional/plugin/lsp/completion_spec.lua
+++ b/test/functional/plugin/lsp/completion_spec.lua
@@ -1,7 +1,9 @@
---@diagnostic disable: no-unknown
-local helpers = require('test.functional.helpers')(after_each)
-local eq = helpers.eq
-local exec_lua = helpers.exec_lua
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local eq = t.eq
+local exec_lua = n.exec_lua
--- Convert completion results.
---
@@ -41,7 +43,7 @@ local function complete(line, candidates, lnum)
end
describe('vim.lsp._completion', function()
- before_each(helpers.clear)
+ before_each(n.clear)
-- https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion
it('prefers textEdit over label as word', function()
diff --git a/test/functional/plugin/lsp/diagnostic_spec.lua b/test/functional/plugin/lsp/diagnostic_spec.lua
index 705c182df7..c5e14ffdc2 100644
--- a/test/functional/plugin/lsp/diagnostic_spec.lua
+++ b/test/functional/plugin/lsp/diagnostic_spec.lua
@@ -1,12 +1,14 @@
-local helpers = require('test.functional.helpers')(after_each)
-local lsp_helpers = require('test.functional.plugin.lsp.helpers')
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
-local clear = helpers.clear
-local exec_lua = helpers.exec_lua
-local eq = helpers.eq
-local neq = require('test.helpers').neq
+local t_lsp = require('test.functional.plugin.lsp.testutil')
-local create_server_definition = lsp_helpers.create_server_definition
+local clear = n.clear
+local exec_lua = n.exec_lua
+local eq = t.eq
+local neq = t.neq
+
+local create_server_definition = t_lsp.create_server_definition
describe('vim.lsp.diagnostic', function()
local fake_uri
@@ -257,7 +259,7 @@ describe('vim.lsp.diagnostic', function()
}, {client_id=client_id})
return vim.fn.bufnr(vim.uri_to_fname("file:///fake/uri2"))
]]
- eq(bufnr, -1)
+ eq(-1, bufnr)
-- Create buffer on diagnostics
bufnr = exec_lua [[
@@ -269,8 +271,8 @@ describe('vim.lsp.diagnostic', function()
}, {client_id=client_id})
return vim.fn.bufnr(vim.uri_to_fname("file:///fake/uri2"))
]]
- neq(bufnr, -1)
- eq(exec_lua([[return #vim.diagnostic.get(...)]], bufnr), 1)
+ neq(-1, bufnr)
+ eq(1, exec_lua([[return #vim.diagnostic.get(...)]], bufnr))
-- Clear diagnostics after buffer was created
bufnr = exec_lua [[
@@ -280,8 +282,8 @@ describe('vim.lsp.diagnostic', function()
}, {client_id=client_id})
return vim.fn.bufnr(vim.uri_to_fname("file:///fake/uri2"))
]]
- neq(bufnr, -1)
- eq(exec_lua([[return #vim.diagnostic.get(...)]], bufnr), 0)
+ neq(-1, bufnr)
+ eq(0, exec_lua([[return #vim.diagnostic.get(...)]], bufnr))
end)
end)
diff --git a/test/functional/plugin/lsp/handler_spec.lua b/test/functional/plugin/lsp/handler_spec.lua
index 56e29e7337..013a5fb5e7 100644
--- a/test/functional/plugin/lsp/handler_spec.lua
+++ b/test/functional/plugin/lsp/handler_spec.lua
@@ -1,9 +1,10 @@
-local helpers = require('test.functional.helpers')(after_each)
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
-local eq = helpers.eq
-local exec_lua = helpers.exec_lua
-local pcall_err = helpers.pcall_err
-local matches = helpers.matches
+local eq = t.eq
+local exec_lua = n.exec_lua
+local pcall_err = t.pcall_err
+local matches = t.matches
describe('lsp-handlers', function()
describe('vim.lsp._with_extend', function()
diff --git a/test/functional/plugin/lsp/incremental_sync_spec.lua b/test/functional/plugin/lsp/incremental_sync_spec.lua
index bd1842ceb5..238b90b57d 100644
--- a/test/functional/plugin/lsp/incremental_sync_spec.lua
+++ b/test/functional/plugin/lsp/incremental_sync_spec.lua
@@ -1,11 +1,12 @@
-- Test suite for testing interactions with the incremental sync algorithms powering the LSP client
-local helpers = require('test.functional.helpers')(after_each)
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
-local api = helpers.api
-local clear = helpers.clear
-local eq = helpers.eq
-local exec_lua = helpers.exec_lua
-local feed = helpers.feed
+local api = n.api
+local clear = n.clear
+local eq = t.eq
+local exec_lua = n.exec_lua
+local feed = n.feed
before_each(function()
clear()
diff --git a/test/functional/plugin/lsp/inlay_hint_spec.lua b/test/functional/plugin/lsp/inlay_hint_spec.lua
index 192797b312..d3b5ae0e4e 100644
--- a/test/functional/plugin/lsp/inlay_hint_spec.lua
+++ b/test/functional/plugin/lsp/inlay_hint_spec.lua
@@ -1,14 +1,16 @@
-local helpers = require('test.functional.helpers')(after_each)
-local lsp_helpers = require('test.functional.plugin.lsp.helpers')
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
local Screen = require('test.functional.ui.screen')
+local t_lsp = require('test.functional.plugin.lsp.testutil')
-local eq = helpers.eq
-local dedent = helpers.dedent
-local exec_lua = helpers.exec_lua
-local insert = helpers.insert
+local eq = t.eq
+local dedent = t.dedent
+local exec_lua = n.exec_lua
+local insert = n.insert
+local api = n.api
-local clear_notrace = lsp_helpers.clear_notrace
-local create_server_definition = lsp_helpers.create_server_definition
+local clear_notrace = t_lsp.clear_notrace
+local create_server_definition = t_lsp.create_server_definition
local text = dedent([[
auto add(int a, int b) { return a + b; }
@@ -41,12 +43,12 @@ local grid_without_inlay_hints = [[
]]
local grid_with_inlay_hints = [[
- auto add(int a, int b)-> int { return a + b; } |
+ auto add(int a, int b){1:-> int} { return a + b; } |
|
int main() { |
int x = 1; |
int y = 2; |
- return add(a: x,b: y); |
+ return add({1:a:} x,{1:b:} y); |
} |
^} |
|
@@ -68,8 +70,8 @@ before_each(function()
inlayHintProvider = true,
},
handlers = {
- ['textDocument/inlayHint'] = function()
- return vim.json.decode(response)
+ ['textDocument/inlayHint'] = function(_, _, callback)
+ callback(nil, vim.json.decode(response))
end,
}
})
@@ -83,12 +85,12 @@ before_each(function()
)
insert(text)
- exec_lua([[vim.lsp.inlay_hint.enable(bufnr)]])
+ exec_lua([[vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })]])
screen:expect({ grid = grid_with_inlay_hints })
end)
after_each(function()
- exec_lua("vim.api.nvim_exec_autocmds('VimLeavePre', { modeline = false })")
+ api.nvim_exec_autocmds('VimLeavePre', { modeline = false })
end)
describe('vim.lsp.inlay_hint', function()
@@ -104,13 +106,13 @@ describe('vim.lsp.inlay_hint', function()
inlayHintProvider = true,
},
handlers = {
- ['textDocument/inlayHint'] = function()
- return {}
+ ['textDocument/inlayHint'] = function(_, _, callback)
+ callback(nil, {})
end,
}
})
client2 = vim.lsp.start({ name = 'dummy2', cmd = server2.cmd })
- vim.lsp.inlay_hint.enable(bufnr)
+ vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })
]])
exec_lua([[ vim.lsp.stop_client(client2) ]])
@@ -118,18 +120,66 @@ describe('vim.lsp.inlay_hint', function()
end)
describe('enable()', function()
- it('clears/applies inlay hints when passed false/true/nil', function()
- exec_lua([[vim.lsp.inlay_hint.enable(bufnr, false)]])
- screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
+ it('validation', function()
+ t.matches(
+ 'enable: expected boolean, got table',
+ t.pcall_err(exec_lua, [[vim.lsp.inlay_hint.enable({}, { bufnr = bufnr })]])
+ )
+ t.matches(
+ 'enable: expected boolean, got number',
+ t.pcall_err(exec_lua, [[vim.lsp.inlay_hint.enable(42)]])
+ )
+ t.matches(
+ 'filter: expected table, got number',
+ t.pcall_err(exec_lua, [[vim.lsp.inlay_hint.enable(true, 42)]])
+ )
+ end)
+
+ describe('clears/applies inlay hints when passed false/true/nil', function()
+ before_each(function()
+ exec_lua([[
+ bufnr2 = vim.api.nvim_create_buf(true, false)
+ vim.lsp.buf_attach_client(bufnr2, client_id)
+ vim.api.nvim_win_set_buf(0, bufnr2)
+ ]])
+ insert(text)
+ exec_lua([[vim.lsp.inlay_hint.enable(true, { bufnr = bufnr2 })]])
+ exec_lua([[vim.api.nvim_win_set_buf(0, bufnr)]])
+ screen:expect({ grid = grid_with_inlay_hints })
+ end)
+
+ it('for one single buffer', function()
+ exec_lua([[
+ vim.lsp.inlay_hint.enable(false, { bufnr = bufnr })
+ vim.api.nvim_win_set_buf(0, bufnr2)
+ ]])
+ screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ exec_lua([[vim.api.nvim_win_set_buf(0, bufnr)]])
+ screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
- exec_lua([[vim.lsp.inlay_hint.enable(bufnr, true)]])
- screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ exec_lua([[vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })]])
+ screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
- exec_lua([[vim.lsp.inlay_hint.enable(bufnr, not vim.lsp.inlay_hint.is_enabled(bufnr))]])
- screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
+ exec_lua(
+ [[vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr })]]
+ )
+ screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
- exec_lua([[vim.lsp.inlay_hint.enable(bufnr)]])
- screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ exec_lua([[vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })]])
+ screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ end)
+
+ it('for all buffers', function()
+ exec_lua([[vim.lsp.inlay_hint.enable(false)]])
+ screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
+ exec_lua([[vim.api.nvim_win_set_buf(0, bufnr2)]])
+ screen:expect({ grid = grid_without_inlay_hints, unchanged = true })
+
+ exec_lua([[vim.lsp.inlay_hint.enable(true)]])
+ screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ exec_lua([[vim.api.nvim_win_set_buf(0, bufnr)]])
+ screen:expect({ grid = grid_with_inlay_hints, unchanged = true })
+ end)
end)
end)
@@ -156,25 +206,25 @@ describe('vim.lsp.inlay_hint', function()
inlayHintProvider = true,
},
handlers = {
- ['textDocument/inlayHint'] = function()
- return { expected2 }
+ ['textDocument/inlayHint'] = function(_, _, callback)
+ callback(nil, { expected2 })
end,
}
})
client2 = vim.lsp.start({ name = 'dummy2', cmd = server2.cmd })
- vim.lsp.inlay_hint.enable(bufnr)
+ vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })
]],
expected2
)
--- @type vim.lsp.inlay_hint.get.ret
local res = exec_lua([[return vim.lsp.inlay_hint.get()]])
- eq(res, {
+ eq({
{ bufnr = 1, client_id = 1, inlay_hint = expected[1] },
{ bufnr = 1, client_id = 1, inlay_hint = expected[2] },
{ bufnr = 1, client_id = 1, inlay_hint = expected[3] },
{ bufnr = 1, client_id = 2, inlay_hint = expected2 },
- })
+ }, res)
--- @type vim.lsp.inlay_hint.get.ret
res = exec_lua([[return vim.lsp.inlay_hint.get({
@@ -183,9 +233,9 @@ describe('vim.lsp.inlay_hint', function()
["end"] = { line = 2, character = 10 },
},
})]])
- eq(res, {
+ eq({
{ bufnr = 1, client_id = 2, inlay_hint = expected2 },
- })
+ }, res)
--- @type vim.lsp.inlay_hint.get.ret
res = exec_lua([[return vim.lsp.inlay_hint.get({
@@ -195,16 +245,16 @@ describe('vim.lsp.inlay_hint', function()
["end"] = { line = 5, character = 17 },
},
})]])
- eq(res, {
+ eq({
{ bufnr = 1, client_id = 1, inlay_hint = expected[2] },
{ bufnr = 1, client_id = 1, inlay_hint = expected[3] },
- })
+ }, res)
--- @type vim.lsp.inlay_hint.get.ret
res = exec_lua([[return vim.lsp.inlay_hint.get({
bufnr = vim.api.nvim_get_current_buf() + 1,
})]])
- eq(res, {})
+ eq({}, res)
end)
end)
end)
diff --git a/test/functional/plugin/lsp/semantic_tokens_spec.lua b/test/functional/plugin/lsp/semantic_tokens_spec.lua
index 77e39c81c8..7908c5d2e7 100644
--- a/test/functional/plugin/lsp/semantic_tokens_spec.lua
+++ b