aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
committerJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
commitd5f194ce780c95821a855aca3c19426576d28ae0 (patch)
treed45f461b19f9118ad2bb1f440a7a08973ad18832 /test/functional
parentc5d770d311841ea5230426cc4c868e8db27300a8 (diff)
parent44740e561fc93afe3ebecfd3618bda2d2abeafb0 (diff)
downloadrneovim-rahm.tar.gz
rneovim-rahm.tar.bz2
rneovim-rahm.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309HEADrahm
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/api/autocmd_spec.lua133
-rw-r--r--test/functional/api/buffer_updates_spec.lua3
-rw-r--r--test/functional/api/command_spec.lua9
-rw-r--r--test/functional/api/deprecated_spec.lua21
-rw-r--r--test/functional/api/extmark_spec.lua20
-rw-r--r--test/functional/api/highlight_spec.lua23
-rw-r--r--test/functional/api/server_requests_spec.lua16
-rw-r--r--test/functional/api/version_spec.lua18
-rw-r--r--test/functional/api/vim_spec.lua160
-rw-r--r--test/functional/api/window_spec.lua62
-rw-r--r--test/functional/autocmd/autocmd_spec.lua24
-rw-r--r--test/functional/autocmd/completedone_spec.lua2
-rw-r--r--test/functional/autocmd/dirchanged_spec.lua9
-rw-r--r--test/functional/autocmd/focus_spec.lua8
-rw-r--r--test/functional/autocmd/termxx_spec.lua4
-rw-r--r--test/functional/core/channels_spec.lua7
-rw-r--r--test/functional/core/exit_spec.lua6
-rw-r--r--test/functional/core/fileio_spec.lua13
-rw-r--r--test/functional/core/job_spec.lua84
-rw-r--r--test/functional/core/log_spec.lua2
-rw-r--r--test/functional/core/main_spec.lua117
-rw-r--r--test/functional/core/remote_spec.lua18
-rw-r--r--test/functional/core/startup_spec.lua129
-rw-r--r--test/functional/editor/completion_spec.lua69
-rw-r--r--test/functional/editor/defaults_spec.lua99
-rw-r--r--test/functional/editor/mode_normal_spec.lua8
-rw-r--r--test/functional/ex_cmds/swapfile_preserve_recover_spec.lua43
-rw-r--r--test/functional/ex_cmds/wundo_spec.lua16
-rw-r--r--test/functional/fixtures/CMakeLists.txt3
-rw-r--r--test/functional/fixtures/fake-lsp-server.lua15
-rw-r--r--test/functional/fixtures/printargs-test.c2
-rw-r--r--test/functional/fixtures/shell-test.c17
-rw-r--r--test/functional/fixtures/streams-test.c3
-rw-r--r--test/functional/legacy/cmdline_spec.lua70
-rw-r--r--test/functional/legacy/highlight_spec.lua2
-rw-r--r--test/functional/legacy/messages_spec.lua41
-rw-r--r--test/functional/legacy/signs_spec.lua9
-rw-r--r--test/functional/legacy/substitute_spec.lua6
-rw-r--r--test/functional/legacy/window_cmd_spec.lua4
-rw-r--r--test/functional/lua/diagnostic_spec.lua249
-rw-r--r--test/functional/lua/filetype_spec.lua14
-rw-r--r--test/functional/lua/fs_spec.lua228
-rw-r--r--test/functional/lua/func_memoize_spec.lua142
-rw-r--r--test/functional/lua/hl_spec.lua31
-rw-r--r--test/functional/lua/json_spec.lua39
-rw-r--r--test/functional/lua/loader_spec.lua18
-rw-r--r--test/functional/lua/system_spec.lua48
-rw-r--r--test/functional/lua/text_spec.lua16
-rw-r--r--test/functional/lua/thread_spec.lua20
-rw-r--r--test/functional/lua/ui_event_spec.lua177
-rw-r--r--test/functional/lua/uri_spec.lua8
-rw-r--r--test/functional/lua/vim_spec.lua13
-rw-r--r--test/functional/lua/watch_spec.lua3
-rw-r--r--test/functional/lua/with_spec.lua17
-rw-r--r--test/functional/options/defaults_spec.lua16
-rw-r--r--test/functional/options/winfixbuf_spec.lua74
-rw-r--r--test/functional/plugin/health_spec.lua12
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua54
-rw-r--r--test/functional/plugin/lsp/diagnostic_spec.lua61
-rw-r--r--test/functional/plugin/lsp/folding_range_spec.lua647
-rw-r--r--test/functional/plugin/lsp/handler_spec.lua42
-rw-r--r--test/functional/plugin/lsp/incremental_sync_spec.lua10
-rw-r--r--test/functional/plugin/lsp/semantic_tokens_spec.lua2
-rw-r--r--test/functional/plugin/lsp/testutil.lua13
-rw-r--r--test/functional/plugin/lsp/utils_spec.lua62
-rw-r--r--test/functional/plugin/lsp_spec.lua419
-rw-r--r--test/functional/plugin/man_spec.lua26
-rw-r--r--test/functional/provider/clipboard_spec.lua2
-rw-r--r--test/functional/script/luacats_grammar_spec.lua4
-rw-r--r--test/functional/shada/marks_spec.lua10
-rw-r--r--test/functional/shada/shada_spec.lua18
-rw-r--r--test/functional/terminal/altscreen_spec.lua12
-rw-r--r--test/functional/terminal/api_spec.lua8
-rw-r--r--test/functional/terminal/buffer_spec.lua136
-rw-r--r--test/functional/terminal/channel_spec.lua14
-rw-r--r--test/functional/terminal/clipboard_spec.lua2
-rw-r--r--test/functional/terminal/cursor_spec.lua403
-rw-r--r--test/functional/terminal/ex_terminal_spec.lua12
-rw-r--r--test/functional/terminal/highlight_spec.lua105
-rw-r--r--test/functional/terminal/mouse_spec.lua82
-rw-r--r--test/functional/terminal/scrollback_spec.lua44
-rw-r--r--test/functional/terminal/tui_spec.lua375
-rw-r--r--test/functional/terminal/window_spec.lua30
-rw-r--r--test/functional/terminal/window_split_tab_spec.lua10
-rw-r--r--test/functional/testnvim.lua281
-rw-r--r--test/functional/testnvim/exec_lua.lua148
-rw-r--r--test/functional/testterm.lua12
-rw-r--r--test/functional/treesitter/fold_spec.lua76
-rw-r--r--test/functional/treesitter/highlight_spec.lua823
-rw-r--r--test/functional/treesitter/inspect_tree_spec.lua86
-rw-r--r--test/functional/treesitter/language_spec.lua4
-rw-r--r--test/functional/treesitter/node_spec.lua28
-rw-r--r--test/functional/treesitter/parser_spec.lua347
-rw-r--r--test/functional/treesitter/query_spec.lua69
-rw-r--r--test/functional/treesitter/testutil.lua25
-rw-r--r--test/functional/ui/cmdline_spec.lua122
-rw-r--r--test/functional/ui/cursor_spec.lua56
-rw-r--r--test/functional/ui/decorations_spec.lua401
-rw-r--r--test/functional/ui/diff_spec.lua20
-rw-r--r--test/functional/ui/float_spec.lua384
-rw-r--r--test/functional/ui/hlstate_spec.lua10
-rw-r--r--test/functional/ui/inccommand_user_spec.lua44
-rw-r--r--test/functional/ui/input_spec.lua4
-rw-r--r--test/functional/ui/linematch_spec.lua28
-rw-r--r--test/functional/ui/messages_spec.lua798
-rw-r--r--test/functional/ui/mode_spec.lua40
-rw-r--r--test/functional/ui/multigrid_spec.lua2
-rw-r--r--test/functional/ui/output_spec.lua4
-rw-r--r--test/functional/ui/popupmenu_spec.lua604
-rw-r--r--test/functional/ui/screen.lua58
-rw-r--r--test/functional/ui/screen_basic_spec.lua59
-rw-r--r--test/functional/ui/sign_spec.lua202
-rw-r--r--test/functional/ui/statuscolumn_spec.lua177
-rw-r--r--test/functional/ui/statusline_spec.lua505
-rw-r--r--test/functional/ui/syntax_conceal_spec.lua33
-rw-r--r--test/functional/ui/title_spec.lua57
-rw-r--r--test/functional/vimscript/ctx_functions_spec.lua7
-rw-r--r--test/functional/vimscript/getchar_spec.lua95
-rw-r--r--test/functional/vimscript/null_spec.lua2
-rw-r--r--test/functional/vimscript/timer_spec.lua65
120 files changed, 8006 insertions, 2693 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua
index 3f9883f43f..64b28e7bf7 100644
--- a/test/functional/api/autocmd_spec.lua
+++ b/test/functional/api/autocmd_spec.lua
@@ -273,54 +273,72 @@ describe('autocmd api', function()
eq({}, api.nvim_get_autocmds({ event = 'User', pattern = 'Test' }))
end)
- it('receives an args table', function()
+ local function test_autocmd_args(event)
+ local function get_amatch(pat)
+ return event == 'User' and pat or vim.fs.normalize(n.fn.fnamemodify(pat, ':p'))
+ end
+
local group_id = api.nvim_create_augroup('TestGroup', {})
-- Having an existing autocmd calling expand("<afile>") shouldn't change args #18964
- api.nvim_create_autocmd('User', {
+ api.nvim_create_autocmd(event, {
group = 'TestGroup',
pattern = 'Te*',
command = 'call expand("<afile>")',
})
- local autocmd_id = exec_lua [[
- return vim.api.nvim_create_autocmd("User", {
+ local autocmd_id = exec_lua(([[
+ return vim.api.nvim_create_autocmd(%q, {
group = "TestGroup",
pattern = "Te*",
callback = function(args)
vim.g.autocmd_args = args
end,
})
- ]]
+ ]]):format(event))
- api.nvim_exec_autocmds('User', { pattern = 'Test pattern' })
+ local exec_pat = 'Test pattern'
+ local amatch = get_amatch(exec_pat)
+ api.nvim_exec_autocmds(event, { pattern = exec_pat })
eq({
id = autocmd_id,
group = group_id,
- event = 'User',
- match = 'Test pattern',
- file = 'Test pattern',
+ event = event,
+ match = amatch,
+ file = exec_pat,
buf = 1,
}, api.nvim_get_var('autocmd_args'))
-- Test without a group
- autocmd_id = exec_lua [[
- return vim.api.nvim_create_autocmd("User", {
+ autocmd_id = exec_lua(([[
+ return vim.api.nvim_create_autocmd(%q, {
pattern = "*",
callback = function(args)
vim.g.autocmd_args = args
end,
})
- ]]
+ ]]):format(event))
- api.nvim_exec_autocmds('User', { pattern = 'some_pat' })
+ exec_pat = 'some_pat'
+ amatch = get_amatch(exec_pat)
+ api.nvim_exec_autocmds(event, { pattern = exec_pat })
eq({
id = autocmd_id,
group = nil,
- event = 'User',
- match = 'some_pat',
- file = 'some_pat',
+ event = event,
+ match = amatch,
+ file = exec_pat,
buf = 1,
}, api.nvim_get_var('autocmd_args'))
+ end
+
+ describe('receives correct args table', function()
+ it('for event that takes non-file pattern', function()
+ test_autocmd_args('User')
+ end)
+
+ it('for event that takes file pattern', function()
+ test_autocmd_args('BufEnter')
+ end)
end)
it('can receive arbitrary data', function()
@@ -881,6 +899,89 @@ describe('autocmd api', function()
eq([[:echo "Buffer"]], normalized_aus[1].command)
end)
end)
+
+ describe('id', function()
+ it('gets events by ID', function()
+ local id = api.nvim_create_autocmd('BufEnter', {
+ command = 'echo "hello"',
+ })
+ eq({
+ {
+ buflocal = false,
+ command = 'echo "hello"',
+ event = 'BufEnter',
+ id = id,
+ once = false,
+ pattern = '*',
+ },
+ }, api.nvim_get_autocmds({ id = id }))
+ end)
+
+ it('gets events by ID by other filters', function()
+ local group_name = 'NVIM_GET_AUTOCMDS_ID'
+ local group = api.nvim_create_augroup(group_name, { clear = true })
+ local id = api.nvim_create_autocmd('BufEnter', {
+ command = 'set number',
+ group = group,
+ })
+ api.nvim_create_autocmd('WinEnter', {
+ group = group,
+ command = 'set cot&',
+ })
+ eq({
+ {
+ buflocal = false,
+ command = 'set number',
+ event = 'BufEnter',
+ group = group,
+ group_name = group_name,
+ id = id,
+ once = false,
+ pattern = '*',
+ },
+ }, api.nvim_get_autocmds({ id = id, group = group }))
+ end)
+
+ it('gets events by ID and a specific event', function()
+ local id = api.nvim_create_autocmd('InsertEnter', { command = 'set number' })
+ api.nvim_create_autocmd('InsertEnter', { command = 'set wrap' })
+ eq({
+ {
+ buflocal = false,
+ command = 'set number',
+ event = 'InsertEnter',
+ id = id,
+ once = false,
+ pattern = '*',
+ },
+ }, api.nvim_get_autocmds({ id = id, event = 'InsertEnter' }))
+ end)
+
+ it('gets events by ID and a specific pattern', function()
+ local id = api.nvim_create_autocmd('InsertEnter', {
+ pattern = '*.c',
+ command = 'set number',
+ })
+ api.nvim_create_autocmd('InsertEnter', {
+ pattern = '*.c',
+ command = 'set wrap',
+ })
+ eq({
+ {
+ buflocal = false,
+ command = 'set number',
+ event = 'InsertEnter',
+ id = id,
+ once = false,
+ pattern = '*.c',
+ },
+ }, api.nvim_get_autocmds({ id = id, pattern = '*.c' }))
+ end)
+
+ it('empty result when id does not found', function()
+ eq({}, api.nvim_get_autocmds({ id = 255 }))
+ end)
+ end)
end)
describe('nvim_exec_autocmds', function()
diff --git a/test/functional/api/buffer_updates_spec.lua b/test/functional/api/buffer_updates_spec.lua
index 527394bfd1..489f601d31 100644
--- a/test/functional/api/buffer_updates_spec.lua
+++ b/test/functional/api/buffer_updates_spec.lua
@@ -879,7 +879,8 @@ describe('API: buffer events:', function()
it('when :terminal lines change', function()
local buffer_lines = {}
local expected_lines = {}
- fn.termopen({ nvim_prog, '-u', 'NONE', '-i',