Mercurial > vim
changeset 29054:e7bd4c788053 v8.2.5049
patch 8.2.5049: insufficient tests for autocommands
Commit: https://github.com/vim/vim/commit/00e977cb83625f979d13639249a7788d5a1cb71e
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Wed Jun 1 12:31:53 2022 +0100
patch 8.2.5049: insufficient tests for autocommands
Problem: Insufficient tests for autocommands.
Solution: Add a few more tests. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/10507)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 01 Jun 2022 13:45:04 +0200 |
parents | 22daa4bc6cf3 |
children | 7edd8ffa0d9b |
files | src/autocmd.c src/testdir/gen_opt_test.vim src/testdir/test_autocmd.vim src/testdir/test_cmdline.vim src/version.c |
diffstat | 5 files changed, 37 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/autocmd.c +++ b/src/autocmd.c @@ -3161,33 +3161,23 @@ f_autocmd_get(typval_T *argvars, typval_ for (ac = ap->cmds; ac != NULL; ac = ac->next) { event_dict = dict_alloc(); - if (event_dict == NULL) - return; - - if (list_append_dict(event_list, event_dict) == FAIL) - return; - - if (dict_add_string(event_dict, "event", event_name) == FAIL) - return; - - if (dict_add_string(event_dict, "group", group_name == NULL - ? (char_u *)"" : group_name) == FAIL) + if (event_dict == NULL + || list_append_dict(event_list, event_dict) == FAIL) return; - if (ap->buflocal_nr != 0) - if (dict_add_number(event_dict, "bufnr", ap->buflocal_nr) - == FAIL) - return; - - if (dict_add_string(event_dict, "pattern", ap->pat) == FAIL) - return; - - if (dict_add_string(event_dict, "cmd", ac->cmd) == FAIL) - return; - - if (dict_add_bool(event_dict, "once", ac->once) == FAIL) - return; - if (dict_add_bool(event_dict, "nested", ac->nested) == FAIL) + if (dict_add_string(event_dict, "event", event_name) == FAIL + || dict_add_string(event_dict, "group", + group_name == NULL ? (char_u *)"" + : group_name) == FAIL + || (ap->buflocal_nr != 0 + && (dict_add_number(event_dict, "bufnr", + ap->buflocal_nr) == FAIL)) + || dict_add_string(event_dict, "pattern", + ap->pat) == FAIL + || dict_add_string(event_dict, "cmd", ac->cmd) == FAIL + || dict_add_bool(event_dict, "once", ac->once) == FAIL + || dict_add_bool(event_dict, "nested", + ac->nested) == FAIL) return; } }
--- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -90,7 +90,7 @@ let test_values = { \ 'display': [['', 'lastline', 'lastline,uhex'], ['xxx']], \ 'eadirection': [['', 'both', 'ver'], ['xxx', 'ver,hor']], \ 'encoding': [['latin1'], ['xxx', '']], - \ 'eventignore': [['', 'WinEnter', 'WinLeave,winenter'], ['xxx']], + \ 'eventignore': [['', 'WinEnter', 'WinLeave,winenter', 'all,WinEnter'], ['xxx']], \ 'fileencoding': [['', 'latin1', 'xxx'], []], \ 'fileformat': [['', 'dos', 'unix'], ['xxx']], \ 'fileformats': [['', 'dos', 'dos,unix'], ['xxx']],
--- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -3384,6 +3384,12 @@ func Test_autocmd_add() let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, \ cmd: 'echo "bufadd"'}] call assert_fails("echo autocmd_add(l)", 'E680:') + let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, + \ pattern: '*.py', cmd: 'echo "bufadd"'}] + call assert_fails("echo autocmd_add(l)", 'E680:') + let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, + \ pattern: ['*.py', '*.c'], cmd: 'echo "bufadd"'}] + call assert_fails("echo autocmd_add(l)", 'E680:') let l = [#{group: 'TestAcSet', event: 'BufRead', bufnr: [], \ cmd: 'echo "bufread"'}] call assert_fails("echo autocmd_add(l)", 'E745:') @@ -3479,6 +3485,7 @@ func Test_autocmd_add() " Test for invalid values for 'pattern' item let l = [#{group: 'TestAcSet', event: "BufEnter", \ pattern: test_null_string(), cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') let l = [#{group: 'TestAcSet', event: "BufEnter", \ pattern: test_null_list(), cmd: 'echo "bufcmds"'}] call assert_fails('call autocmd_add(l)', 'E714:') @@ -3555,6 +3562,9 @@ func Test_autocmd_delete() " Delete a non-existing autocmd pattern let l = [#{group: 'TestAcSet', event: 'BufAdd', pat: 'abc'}] call assert_true(autocmd_delete(l)) + " Delete an autocmd for a non-existing buffer + let l = [#{event: '*', bufnr: 9999, cmd: 'echo "x"'}] + call assert_fails('call autocmd_delete(l)', 'E680:') " Delete an autocmd group augroup TestAcSet
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1063,10 +1063,19 @@ func Test_cmdline_complete_various() augroup END call feedkeys(":augroup X\<C-A>\<C-B>\"\<CR>", 'xt') call assert_equal("\"augroup XTest.test", @:) + + " group name completion in :autocmd call feedkeys(":au X\<C-A>\<C-B>\"\<CR>", 'xt') call assert_equal("\"au XTest.test", @:) + call feedkeys(":au XTest.test\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal("\"au XTest.test", @:) + augroup! XTest.test + " autocmd pattern completion + call feedkeys(":au BufEnter *.py\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal("\"au BufEnter *.py\t", @:) + " completion for the :unlet command call feedkeys(":unlet one two\<C-A>\<C-B>\"\<CR>", 'xt') call assert_equal("\"unlet one two", @:)