diff options
author | zeertzjq <zeertzjq@outlook.com> | 2025-02-27 13:48:52 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-27 05:48:52 +0000 |
commit | 1e4c70803312cb4ae06cffb3de4a24105dd2a514 (patch) | |
tree | 7acb6be54fd0d7830ae8ec5288953c003cd22a27 | |
parent | 877f3b7288fba61dfc90b1b50c9e4dfa06e32b9a (diff) | |
download | rneovim-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.lua | 190 |
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) |