aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-02-27 13:48:52 +0800
committerGitHub <noreply@github.com>2025-02-27 05:48:52 +0000
commit1e4c70803312cb4ae06cffb3de4a24105dd2a514 (patch)
tree7acb6be54fd0d7830ae8ec5288953c003cd22a27
parent877f3b7288fba61dfc90b1b50c9e4dfa06e32b9a (diff)
downloadrneovim-1e4c70803312cb4ae06cffb3de4a24105dd2a514.tar.gz
rneovim-1e4c70803312cb4ae06cffb3de4a24105dd2a514.tar.bz2
rneovim-1e4c70803312cb4ae06cffb3de4a24105dd2a514.zip
test: option set by Lua autocommand has correct script context (#32652)
-rw-r--r--test/functional/ex_cmds/verbose_spec.lua190
1 files changed, 73 insertions, 117 deletions
diff --git a/test/functional/ex_cmds/verbose_spec.lua b/test/functional/ex_cmds/verbose_spec.lua
index 8458cd9b69..071e9690fa 100644
--- a/test/functional/ex_cmds/verbose_spec.lua
+++ b/test/functional/ex_cmds/verbose_spec.lua
@@ -9,11 +9,13 @@ local write_file = t.write_file
local api = n.api
local fn = n.fn
-local function last_set_lua_tests(cmd)
+--- @param cmd string
+--- @param v1 boolean
+local function last_set_lua_verbose_tests(cmd, v1)
local script_location, script_file
-- All test cases below use the same Nvim instance.
setup(function()
- clear({ args = { '-V1' } })
+ clear(v1 and { args = { '-V1' } } or nil)
script_file = 'test_verbose.lua'
local current_dir = fn.getcwd()
current_dir = fn.fnamemodify(current_dir, ':~')
@@ -28,6 +30,12 @@ vim.opt.number = true
vim.api.nvim_exec2('set numberwidth=2', {})
vim.cmd('set colorcolumn=+1')
+local function cb()
+ -- This is a comment
+ -- This is another comment
+ vim.o.mouse = 'nv'
+end
+
vim.api.nvim_set_keymap('n', '<leader>key1', ':echo "test"<cr>', {noremap = true})
vim.keymap.set('n', '<leader>key2', ':echo "test"<cr>')
@@ -61,69 +69,79 @@ function! s:return80()\
endfunction\
let &tw = s:return80()\
", {})
+
+vim.api.nvim_create_autocmd('User', { pattern = 'set_mouse', callback = cb })
]]
)
exec(cmd .. ' ' .. script_file)
+ exec('doautocmd User set_mouse')
end)
+ local function get_last_set_location(linenr)
+ return ('%s %s'):format(
+ (cmd == 'source' or v1) and script_location or 'Lua',
+ v1 and ('line %d'):format(linenr) or '(run Nvim with -V1 for more details)'
+ )
+ end
+
local option_checks = {
- { 'nvim_set_option_value', 'hlsearch', 'nohlsearch' },
- { 'vim.bo', 'expandtab', ' expandtab' },
- { 'vim.opt', 'number', ' number' },
- { 'nvim_exec2', 'numberwidth', ' numberwidth=2' },
- { 'vim.cmd', 'colorcolumn', ' colorcolumn=+1' },
+ { 'nvim_set_option_value', 'hlsearch', 'nohlsearch', 1 },
+ { 'vim.bo', 'expandtab', ' expandtab', 2 },
+ { 'vim.opt', 'number', ' number', 3 },
+ { 'nvim_exec2', 'numberwidth', ' numberwidth=2', 4 },
+ { 'vim.cmd', 'colorcolumn', ' colorcolumn=+1', 5 },
+ { 'Lua autocommand', 'mouse', ' mouse=nv', 10 },
}
teardown(function()
os.remove(script_file)
end)
- for linenr, check in ipairs(option_checks) do
- it(('"Last set" for option set by %s'):format(check[1]), function()
+ for _, check in ipairs(option_checks) do
+ it(('for option set by %s'):format(check[1]), function()
local result = exec_capture((':verbose set %s?'):format(check[2]))
eq(
string.format(
[[
%s
- Last set from %s line %d]],
+ Last set from %s]],
check[3],
- script_location,
- linenr
+ get_last_set_location(check[4])
),
result
)
end)
end
- it('"Last set" for mapping set by nvim_set_keymap', function()
+ it('for mapping set by nvim_set_keymap', function()
local result = exec_capture(':verbose map <leader>key1')
eq(
string.format(
[[
n \key1 * :echo "test"<CR>
- Last set from %s line 7]],
- script_location
+ Last set from %s]],
+ get_last_set_location(13)
),
result
)
end)
- it('"Last set" for mapping set by vim.keymap.set', function()
+ it('for mapping set by vim.keymap.set', function()
local result = exec_capture(':verbose map <leader>key2')
eq(
string.format(
[[
n \key2 * :echo "test"<CR>
- Last set from %s line 8]],
- script_location
+ Last set from %s]],
+ get_last_set_location(14)
),
result
)
end)
- it('"Last set" for autocmd set by nvim_exec2', function()
+ it('for autocmd set by nvim_exec2', function()
local result = exec_capture(':verbose autocmd test_group Filetype c')
eq(
string.format(
@@ -131,14 +149,14 @@ n \key2 * :echo "test"<CR>
--- Autocommands ---
test_group FileType
c setl cindent
- Last set from %s line 10]],
- script_location
+ Last set from %s]],
+ get_last_set_location(16)
),
result
)
end)
- it('"Last set" for autocmd set by nvim_create_autocmd', function()
+ it('for autocmd set by nvim_create_autocmd', function()
local result = exec_capture(':verbose autocmd test_group Filetype cpp')
eq(
string.format(
@@ -146,40 +164,40 @@ test_group FileType
--- Autocommands ---
test_group FileType
cpp setl cindent
- Last set from %s line 16]],
- script_location
+ Last set from %s]],
+ get_last_set_location(22)
),
result
)
end)
- it('"Last set" for highlight group set by nvim_exec2', function()
+ it('for highlight group set by nvim_exec2', function()
local result = exec_capture(':verbose highlight TestHL1')
eq(
string.format(
[[
TestHL1 xxx guibg=Blue
- Last set from %s line 22]],
- script_location
+ Last set from %s]],
+ get_last_set_location(28)
),
result
)
end)
- it('"Last set" for highlight group set by nvim_set_hl', function()
+ it('for highlight group set by nvim_set_hl', function()
local result = exec_capture(':verbose highlight TestHL2')
eq(
string.format(
[[
TestHL2 xxx guibg=Green
- Last set from %s line 23]],
- script_location
+ Last set from %s]],
+ get_last_set_location(29)
),
result
)
end)
- it('"Last set" for command defined by nvim_command', function()
+ it('for command defined by nvim_command', function()
if cmd == 'luafile' then
pending('nvim_command does not set the script context')
end
@@ -189,139 +207,77 @@ TestHL2 xxx guibg=Green
[[
Name Args Address Complete Definition
Bdelete 0 :bd
- Last set from %s line 25]],
- script_location
+ Last set from %s]],
+ get_last_set_location(31)
),
result
)
end)
- it('"Last set" for command defined by nvim_create_user_command', function()
+ it('for command defined by nvim_create_user_command', function()
local result = exec_capture(':verbose command TestCommand')
eq(
string.format(
[[
Name Args Address Complete Definition
TestCommand 0 :echo 'Hello'
- Last set from %s line 26]],
- script_location
+ Last set from %s]],
+ get_last_set_location(32)
),
result
)
end)
- it('"Last set" for function defined by nvim_exec2', function()
+ it('for function defined by nvim_exec2', function()
local result = exec_capture(':verbose function Close_Window')
eq(
string.format(
[[
function Close_Window() abort
- Last set from %s line 28
+ Last set from %s
1 wincmd -
endfunction]],
- script_location
+ get_last_set_location(34)
),
result
)
end)
- it('"Last set" works with anonymous sid from nvim_exec2', function()
+ it('for option set by nvim_exec2 with anonymous sid', function()
local result = exec_capture(':verbose set tw?')
+ local loc = get_last_set_location(40)
+ if loc == 'Lua (run Nvim with -V1 for more details)' then
+ loc = 'anonymous :source (script id 1)'
+ end
eq(
string.format(
[[
textwidth=80
- Last set from %s line 34]],
- script_location
+ Last set from %s]],
+ loc
),
result
)
end)
end
-describe('lua :verbose with -V1 when using :source', function()
- last_set_lua_tests('source')
-end)
-
-describe('lua :verbose with -V1 when using :luafile', function()
- last_set_lua_tests('luafile')
-end)
-
-describe('lua :verbose without -V1', function()
- local script_location, script_file
-
- -- All test cases below use the same Nvim instance.
- setup(function()
- clear()
- script_file = 'test_verbose_0.lua'
- local current_dir = fn.getcwd()
- current_dir = fn.fnamemodify(current_dir, ':~')
- script_location = table.concat({ current_dir, n.get_pathsep(), script_file })
- write_file(
- script_file,
- [[
-vim.api.nvim_set_option_value('hlsearch', false, {})
-vim.bo.expandtab = true
-vim.opt.number = true
-vim.api.nvim_exec2('set numberwidth=2', {})
-vim.cmd('set colorcolumn=+1')
-]]
- )
+describe('lua :verbose with -V1', function()
+ describe('"Last set" shows full location when using :source', function()
+ last_set_lua_verbose_tests('source', true)
end)
- local option_checks = {
- { 'nvim_set_option_value', 'hlsearch', 'nohlsearch' },
- { 'vim.bo', 'expandtab', ' expandtab' },
- { 'vim.opt', 'number', ' number' },
- { 'nvim_exec2', 'numberwidth', ' numberwidth=2' },
- { 'vim.cmd', 'colorcolumn', ' colorcolumn=+1' },
- }
-
- teardown(function()
- os.remove(script_file)
+ describe('"Last set" shows full location using :luafile', function()
+ last_set_lua_verbose_tests('luafile', true)
end)
+end)
+describe('lua :verbose without -V1', function()
describe('"Last set" shows file name when using :source', function()
- setup(function()
- exec(':source ' .. script_file)
- end)
-
- for _, check in ipairs(option_checks) do
- it(('for option set by %s'):format(check[1]), function()
- local result = exec_capture((':verbose set %s?'):format(check[2]))
- eq(
- string.format(
- [[
-%s
- Last set from %s (run Nvim with -V1 for more details)]],
- check[3],
- script_location
- ),
- result
- )
- end)
- end
+ last_set_lua_verbose_tests('source', false)
end)
describe('"Last set" suggests -V1 when using :luafile', function()
- setup(function()
- exec(':luafile ' .. script_file)
- end)
-
- for _, check in ipairs(option_checks) do
- it(('for option set by %s'):format(check[1]), function()
- local result = exec_capture((':verbose set %s?'):format(check[2]))
- eq(
- string.format(
- [[
-%s
- Last set from Lua (run Nvim with -V1 for more details)]],
- check[3]
- ),
- result
- )
- end)
- end
+ last_set_lua_verbose_tests('luafile', false)
end)
end)