Mercurial > vim
changeset 29369:b1f345ec827e v9.0.0027
patch 9.0.0027: the command line test is getting quite big
Commit: https://github.com/vim/vim/commit/2d2950198231a31bf87c1cd4322099cc36b0bb93
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 2 16:29:34 2022 +0100
patch 9.0.0027: the command line test is getting quite big
Problem: The command line test is getting quite big.
Solution: Move command line window tests to a separate file.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 02 Jul 2022 17:30:02 +0200 |
parents | 8828385b55da |
children | 02ed4800c675 |
files | src/testdir/Make_all.mak src/testdir/test_cmdline.vim src/testdir/test_cmdwin.vim src/testdir/test_ins_complete.vim src/testdir/test_normal.vim src/version.c |
diffstat | 6 files changed, 364 insertions(+), 377 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -87,6 +87,7 @@ NEW_TESTS = \ test_clientserver \ test_close_count \ test_cmdline \ + test_cmdwin \ test_command_count \ test_comments \ test_comparators \ @@ -345,6 +346,7 @@ NEW_TESTS_RES = \ test_clientserver.res \ test_close_count.res \ test_cmdline.res \ + test_cmdwin.res \ test_command_count.res \ test_comments.res \ test_comparators.res \
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1322,57 +1322,6 @@ func Test_getcmdtype() call assert_equal('', getcmdline()) endfunc -func Test_getcmdwintype() - CheckFeature cmdwin - - call feedkeys("q/:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') - call assert_equal('/', a) - - call feedkeys("q?:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') - call assert_equal('?', a) - - call feedkeys("q::let a = getcmdwintype()\<CR>:q\<CR>", 'x!') - call assert_equal(':', a) - - call feedkeys(":\<C-F>:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') - call assert_equal(':', a) - - call assert_equal('', getcmdwintype()) -endfunc - -func Test_getcmdwin_autocmd() - CheckFeature cmdwin - - let s:seq = [] - augroup CmdWin - au WinEnter * call add(s:seq, 'WinEnter ' .. win_getid()) - au WinLeave * call add(s:seq, 'WinLeave ' .. win_getid()) - au BufEnter * call add(s:seq, 'BufEnter ' .. bufnr()) - au BufLeave * call add(s:seq, 'BufLeave ' .. bufnr()) - au CmdWinEnter * call add(s:seq, 'CmdWinEnter ' .. win_getid()) - au CmdWinLeave * call add(s:seq, 'CmdWinLeave ' .. win_getid()) - - let org_winid = win_getid() - let org_bufnr = bufnr() - call feedkeys("q::let a = getcmdwintype()\<CR>:let s:cmd_winid = win_getid()\<CR>:let s:cmd_bufnr = bufnr()\<CR>:q\<CR>", 'x!') - call assert_equal(':', a) - call assert_equal([ - \ 'WinLeave ' .. org_winid, - \ 'WinEnter ' .. s:cmd_winid, - \ 'BufLeave ' .. org_bufnr, - \ 'BufEnter ' .. s:cmd_bufnr, - \ 'CmdWinEnter ' .. s:cmd_winid, - \ 'CmdWinLeave ' .. s:cmd_winid, - \ 'BufLeave ' .. s:cmd_bufnr, - \ 'WinLeave ' .. s:cmd_winid, - \ 'WinEnter ' .. org_winid, - \ 'BufEnter ' .. org_bufnr, - \ ], s:seq) - - au! - augroup END -endfunc - func Test_verbosefile() set verbosefile=Xlog echomsg 'foo' @@ -1454,65 +1403,6 @@ func Test_cmdline_overstrike() let &encoding = encoding_save endfunc -func Test_cmdwin_bug() - CheckFeature cmdwin - - let winid = win_getid() - sp - try - call feedkeys("q::call win_gotoid(" .. winid .. ")\<CR>:q\<CR>", 'x!') - catch /^Vim\%((\a\+)\)\=:E11/ - endtry - bw! -endfunc - -func Test_cmdwin_restore() - CheckFeature cmdwin - CheckScreendump - - let lines =<< trim [SCRIPT] - augroup vimHints | au! | augroup END - call setline(1, range(30)) - 2split - [SCRIPT] - call writefile(lines, 'XTest_restore') - - let buf = RunVimInTerminal('-S XTest_restore', {'rows': 12}) - call TermWait(buf, 50) - call term_sendkeys(buf, "q:") - call VerifyScreenDump(buf, 'Test_cmdwin_restore_1', {}) - - " normal restore - call term_sendkeys(buf, ":q\<CR>") - call VerifyScreenDump(buf, 'Test_cmdwin_restore_2', {}) - - " restore after setting 'lines' with one window - call term_sendkeys(buf, ":close\<CR>") - call term_sendkeys(buf, "q:") - call term_sendkeys(buf, ":set lines=18\<CR>") - call term_sendkeys(buf, ":q\<CR>") - call VerifyScreenDump(buf, 'Test_cmdwin_restore_3', {}) - - " clean up - call StopVimInTerminal(buf) - call delete('XTest_restore') -endfunc - -func Test_cmdwin_no_terminal() - CheckFeature cmdwin - CheckFeature terminal - CheckNotMSWindows - - let buf = RunVimInTerminal('', {'rows': 12}) - call TermWait(buf, 50) - call term_sendkeys(buf, ":set cmdheight=2\<CR>") - call term_sendkeys(buf, "q:") - call term_sendkeys(buf, ":let buf = term_start(['/bin/echo'], #{hidden: 1})\<CR>") - call VerifyScreenDump(buf, 'Test_cmdwin_no_terminal', {}) - call term_sendkeys(buf, ":q\<CR>") - call StopVimInTerminal(buf) -endfunc - func Test_buffers_lastused() " check that buffers are sorted by time when wildmode has lastused call test_settime(1550020000) " middle @@ -1558,61 +1448,6 @@ func Test_buffers_lastused() bwipeout bufc endfunc -func Test_cmdwin_feedkeys() - CheckFeature cmdwin - - " This should not generate E488 - call feedkeys("q:\<CR>", 'x') - " Using feedkeys with q: only should automatically close the cmd window - call feedkeys('q:', 'xt') - call assert_equal(1, winnr('$')) - call assert_equal('', getcmdwintype()) -endfunc - -" Tests for the issues fixed in 7.4.441. -" When 'cedit' is set to Ctrl-C, opening the command window hangs Vim -func Test_cmdwin_cedit() - CheckFeature cmdwin - - exe "set cedit=\<C-c>" - normal! : - call assert_equal(1, winnr('$')) - - let g:cmd_wintype = '' - func CmdWinType() - let g:cmd_wintype = getcmdwintype() - let g:wintype = win_gettype() - return '' - endfunc - - call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>") - echo input('') - call assert_equal('@', g:cmd_wintype) - call assert_equal('command', g:wintype) - - set cedit&vim - delfunc CmdWinType -endfunc - -" Test for CmdwinEnter autocmd -func Test_cmdwin_autocmd() - CheckFeature cmdwin - - augroup CmdWin - au! - autocmd BufLeave * if &buftype == '' | update | endif - autocmd CmdwinEnter * startinsert - augroup END - - call assert_fails('call feedkeys("q:xyz\<CR>", "xt")', 'E492:') - call assert_equal('xyz', @:) - - augroup CmdWin - au! - augroup END - augroup! CmdWin -endfunc - func Test_cmdlineclear_tabenter() CheckScreendump @@ -1649,57 +1484,6 @@ func Test_cmdline_expand_special() call delete('Xfile.java') endfunc -func Test_cmdwin_jump_to_win() - CheckFeature cmdwin - - call assert_fails('call feedkeys("q:\<C-W>\<C-W>\<CR>", "xt")', 'E11:') - new - set modified - call assert_fails('call feedkeys("q/:qall\<CR>", "xt")', ['E37:', 'E162:']) - close! - call feedkeys("q/:close\<CR>", "xt") - call assert_equal(1, winnr('$')) - call feedkeys("q/:exit\<CR>", "xt") - call assert_equal(1, winnr('$')) - - " opening command window twice should fail - call assert_beeps('call feedkeys("q:q:\<CR>\<CR>", "xt")') - call assert_equal(1, winnr('$')) -endfunc - -func Test_cmdwin_tabpage() - tabedit - call assert_fails("silent norm q/g :I\<Esc>", 'E11:') - tabclose! -endfunc - -func Test_cmdwin_interrupted() - CheckFeature cmdwin - CheckScreendump - - " aborting the :smile output caused the cmdline window to use the current - " buffer. - let lines =<< trim [SCRIPT] - au WinNew * smile - [SCRIPT] - call writefile(lines, 'XTest_cmdwin') - - let buf = RunVimInTerminal('-S XTest_cmdwin', {'rows': 18}) - " open cmdwin - call term_sendkeys(buf, "q:") - call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 18))}) - " quit more prompt for :smile command - call term_sendkeys(buf, "q") - call WaitForAssert({-> assert_match('^$', term_getline(buf, 18))}) - " execute a simple command - call term_sendkeys(buf, "aecho 'done'\<CR>") - call VerifyScreenDump(buf, 'Test_cmdwin_interrupted', {}) - - " clean up - call StopVimInTerminal(buf) - call delete('XTest_cmdwin') -endfunc - " Test for backtick expression in the command line func Test_cmd_backtick() %argd @@ -2033,14 +1817,6 @@ func Test_cmdline_inputmethod() %bwipe! endfunc -" Test for recursively getting multiple command line inputs -func Test_cmdwin_multi_input() - CheckFeature cmdwin - - call feedkeys(":\<C-R>=input('P: ')\<CR>\"cyan\<CR>\<CR>", 'xt') - call assert_equal('"cyan', @:) -endfunc - " Test for using CTRL-_ in the command line with 'allowrevins' func Test_cmdline_revins() CheckNotMSWindows @@ -2059,58 +1835,6 @@ func Test_cmdline_composing_chars() call assert_equal('"ゔ', @:) endfunc -" Test for normal mode commands not supported in the cmd window -func Test_cmdwin_blocked_commands() - CheckFeature cmdwin - - call assert_fails('call feedkeys("q:\<C-T>\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-]>\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-^>\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:Q\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:Z\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<F1>\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>s\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>v\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>^\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>n\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>z\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>o\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>w\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>j\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>k\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>h\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>l\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>T\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>x\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>r\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>R\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>K\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>}\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>]\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>f\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>d\<CR>", "xt")', 'E11:') - call assert_fails('call feedkeys("q:\<C-W>g\<CR>", "xt")', 'E11:') -endfunc - -" Close the Cmd-line window in insert mode using CTRL-C -func Test_cmdwin_insert_mode_close() - CheckFeature cmdwin - - %bw! - let s = '' - exe "normal q:a\<C-C>let s='Hello'\<CR>" - call assert_equal('Hello', s) - call assert_equal(1, winnr('$')) -endfunc - -func Test_cmdwin_ex_mode_with_modifier() - " this was accessing memory after allocated text in Ex mode - new - call setline(1, ['some', 'text', 'lines']) - silent! call feedkeys("gQnormal vq:atopleft\<C-V>\<CR>\<CR>", 'xt') - bwipe! -endfunc - " test that ";" works to find a match at the start of the first line func Test_zero_line_search() new
new file mode 100644 --- /dev/null +++ b/src/testdir/test_cmdwin.vim @@ -0,0 +1,360 @@ +" Tests for editing the command line. + +source check.vim +CheckFeature cmdwin + +source screendump.vim + +func Test_getcmdwintype() + call feedkeys("q/:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') + call assert_equal('/', a) + + call feedkeys("q?:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') + call assert_equal('?', a) + + call feedkeys("q::let a = getcmdwintype()\<CR>:q\<CR>", 'x!') + call assert_equal(':', a) + + call feedkeys(":\<C-F>:let a = getcmdwintype()\<CR>:q\<CR>", 'x!') + call assert_equal(':', a) + + call assert_equal('', getcmdwintype()) +endfunc + +func Test_getcmdwin_autocmd() + let s:seq = [] + augroup CmdWin + au WinEnter * call add(s:seq, 'WinEnter ' .. win_getid()) + au WinLeave * call add(s:seq, 'WinLeave ' .. win_getid()) + au BufEnter * call add(s:seq, 'BufEnter ' .. bufnr()) + au BufLeave * call add(s:seq, 'BufLeave ' .. bufnr()) + au CmdWinEnter * call add(s:seq, 'CmdWinEnter ' .. win_getid()) + au CmdWinLeave * call add(s:seq, 'CmdWinLeave ' .. win_getid()) + + let org_winid = win_getid() + let org_bufnr = bufnr() + call feedkeys("q::let a = getcmdwintype()\<CR>:let s:cmd_winid = win_getid()\<CR>:let s:cmd_bufnr = bufnr()\<CR>:q\<CR>", 'x!') + call assert_equal(':', a) + call assert_equal([ + \ 'WinLeave ' .. org_winid, + \ 'WinEnter ' .. s:cmd_winid, + \ 'BufLeave ' .. org_bufnr, + \ 'BufEnter ' .. s:cmd_bufnr, + \ 'CmdWinEnter ' .. s:cmd_winid, + \ 'CmdWinLeave ' .. s:cmd_winid, + \ 'BufLeave ' .. s:cmd_bufnr, + \ 'WinLeave ' .. s:cmd_winid, + \ 'WinEnter ' .. org_winid, + \ 'BufEnter ' .. org_bufnr, + \ ], s:seq) + + au! + augroup END +endfunc + +func Test_cmdwin_bug() + let winid = win_getid() + sp + try + call feedkeys("q::call win_gotoid(" .. winid .. ")\<CR>:q\<CR>", 'x!') + catch /^Vim\%((\a\+)\)\=:E11/ + endtry + bw! +endfunc + +func Test_cmdwin_restore() + CheckScreendump + + let lines =<< trim [SCRIPT] + augroup vimHints | au! | augroup END + call setline(1, range(30)) + 2split + [SCRIPT] + call writefile(lines, 'XTest_restore') + + let buf = RunVimInTerminal('-S XTest_restore', {'rows': 12}) + call TermWait(buf, 50) + call term_sendkeys(buf, "q:") + call VerifyScreenDump(buf, 'Test_cmdwin_restore_1', {}) + + " normal restore + call term_sendkeys(buf, ":q\<CR>") + call VerifyScreenDump(buf, 'Test_cmdwin_restore_2', {}) + + " restore after setting 'lines' with one window + call term_sendkeys(buf, ":close\<CR>") + call term_sendkeys(buf, "q:") + call term_sendkeys(buf, ":set lines=18\<CR>") + call term_sendkeys(buf, ":q\<CR>") + call VerifyScreenDump(buf, 'Test_cmdwin_restore_3', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XTest_restore') +endfunc + +func Test_cmdwin_no_terminal() + CheckFeature terminal + CheckNotMSWindows + + let buf = RunVimInTerminal('', {'rows': 12}) + call TermWait(buf, 50) + call term_sendkeys(buf, ":set cmdheight=2\<CR>") + call term_sendkeys(buf, "q:") + call term_sendkeys(buf, ":let buf = term_start(['/bin/echo'], #{hidden: 1})\<CR>") + call VerifyScreenDump(buf, 'Test_cmdwin_no_terminal', {}) + call term_sendkeys(buf, ":q\<CR>") + call StopVimInTerminal(buf) +endfunc + +func Test_cmdwin_feedkeys() + " This should not generate E488 + call feedkeys("q:\<CR>", 'x') + " Using feedkeys with q: only should automatically close the cmd window + call feedkeys('q:', 'xt') + call assert_equal(1, winnr('$')) + call assert_equal('', getcmdwintype()) +endfunc + +" Tests for the issues fixed in 7.4.441. +" When 'cedit' is set to Ctrl-C, opening the command window hangs Vim +func Test_cmdwin_cedit() + exe "set cedit=\<C-c>" + normal! : + call assert_equal(1, winnr('$')) + + let g:cmd_wintype = '' + func CmdWinType() + let g:cmd_wintype = getcmdwintype() + let g:wintype = win_gettype() + return '' + endfunc + + call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>") + echo input('') + call assert_equal('@', g:cmd_wintype) + call assert_equal('command', g:wintype) + + set cedit&vim + delfunc CmdWinType +endfunc + +" Test for CmdwinEnter autocmd +func Test_cmdwin_autocmd() + augroup CmdWin + au! + autocmd BufLeave * if &buftype == '' | update | endif + autocmd CmdwinEnter * startinsert + augroup END + + call assert_fails('call feedkeys("q:xyz\<CR>", "xt")', 'E492:') + call assert_equal('xyz', @:) + + augroup CmdWin + au! + augroup END + augroup! CmdWin +endfunc + +func Test_cmdwin_jump_to_win() + call assert_fails('call feedkeys("q:\<C-W>\<C-W>\<CR>", "xt")', 'E11:') + new + set modified + call assert_fails('call feedkeys("q/:qall\<CR>", "xt")', ['E37:', 'E162:']) + close! + call feedkeys("q/:close\<CR>", "xt") + call assert_equal(1, winnr('$')) + call feedkeys("q/:exit\<CR>", "xt") + call assert_equal(1, winnr('$')) + + " opening command window twice should fail + call assert_beeps('call feedkeys("q:q:\<CR>\<CR>", "xt")') + call assert_equal(1, winnr('$')) +endfunc + +func Test_cmdwin_tabpage() + tabedit + call assert_fails("silent norm q/g :I\<Esc>", 'E11:') + tabclose! +endfunc + +func Test_cmdwin_interrupted() + CheckScreendump + + " aborting the :smile output caused the cmdline window to use the current + " buffer. + let lines =<< trim [SCRIPT] + au WinNew * smile + [SCRIPT] + call writefile(lines, 'XTest_cmdwin') + + let buf = RunVimInTerminal('-S XTest_cmdwin', {'rows': 18}) + " open cmdwin + call term_sendkeys(buf, "q:") + call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 18))}) + " quit more prompt for :smile command + call term_sendkeys(buf, "q") + call WaitForAssert({-> assert_match('^$', term_getline(buf, 18))}) + " execute a simple command + call term_sendkeys(buf, "aecho 'done'\<CR>") + call VerifyScreenDump(buf, 'Test_cmdwin_interrupted', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XTest_cmdwin') +endfunc + +" Test for recursively getting multiple command line inputs +func Test_cmdwin_multi_input() + call feedkeys(":\<C-R>=input('P: ')\<CR>\"cyan\<CR>\<CR>", 'xt') + call assert_equal('"cyan', @:) +endfunc + +" Test for normal mode commands not supported in the cmd window +func Test_cmdwin_blocked_commands() + call assert_fails('call feedkeys("q:\<C-T>\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-]>\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-^>\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:Q\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:Z\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<F1>\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>s\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>v\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>^\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>n\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>z\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>o\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>w\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>j\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>k\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>h\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>l\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>T\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>x\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>r\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>R\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>K\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>}\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>]\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>f\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>d\<CR>", "xt")', 'E11:') + call assert_fails('call feedkeys("q:\<C-W>g\<CR>", "xt")', 'E11:') +endfunc + +" Close the Cmd-line window in insert mode using CTRL-C +func Test_cmdwin_insert_mode_close() + %bw! + let s = '' + exe "normal q:a\<C-C>let s='Hello'\<CR>" + call assert_equal('Hello', s) + call assert_equal(1, winnr('$')) +endfunc + +func Test_cmdwin_ex_mode_with_modifier() + " this was accessing memory after allocated text in Ex mode + new + call setline(1, ['some', 'text', 'lines']) + silent! call feedkeys("gQnormal vq:atopleft\<C-V>\<CR>\<CR>", 'xt') + bwipe! +endfunc + +func s:ComplInCmdwin_GlobalCompletion(a, l, p) + return 'global' +endfunc + +func s:ComplInCmdwin_LocalCompletion(a, l, p) + return 'local' +endfunc + +func Test_compl_in_cmdwin() + set wildmenu wildchar=<Tab> + com! -nargs=1 -complete=command GetInput let input = <q-args> + com! -buffer TestCommand echo 'TestCommand' + let w:test_winvar = 'winvar' + let b:test_bufvar = 'bufvar' + + " User-defined commands + let input = '' + call feedkeys("q:iGetInput T\<C-x>\<C-v>\<CR>", 'tx!') + call assert_equal('TestCommand', input) + + let input = '' + call feedkeys("q::GetInput T\<Tab>\<CR>:q\<CR>", 'tx!') + call assert_equal('T', input) + + + com! -nargs=1 -complete=var GetInput let input = <q-args> + " Window-local variables + let input = '' + call feedkeys("q:iGetInput w:test_\<C-x>\<C-v>\<CR>", 'tx!') + call assert_equal('w:test_winvar', input) + + let input = '' + call feedkeys("q::GetInput w:test_\<Tab>\<CR>:q\<CR>", 'tx!') + call assert_equal('w:test_', input) + + " Buffer-local variables + let input = '' + call feedkeys("q:iGetInput b:test_\<C-x>\<C-v>\<CR>", 'tx!') + call assert_equal('b:test_bufvar', input) + + let input = '' + call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!') + call assert_equal('b:test_', input) + + + " Argument completion of buffer-local command + func s:ComplInCmdwin_GlobalCompletionList(a, l, p) + return ['global'] + endfunc + + func s:ComplInCmdwin_LocalCompletionList(a, l, p) + return ['local'] + endfunc + + func s:ComplInCmdwin_CheckCompletion(arg) + call assert_equal('local', a:arg) + endfunc + + com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion + \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) + com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion + \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) + call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') + + com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList + \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) + com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList + \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) + + call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') + + func! s:ComplInCmdwin_CheckCompletion(arg) + call assert_equal('global', a:arg) + endfunc + new + call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') + quit + + delfunc s:ComplInCmdwin_GlobalCompletion + delfunc s:ComplInCmdwin_LocalCompletion + delfunc s:ComplInCmdwin_GlobalCompletionList + delfunc s:ComplInCmdwin_LocalCompletionList + delfunc s:ComplInCmdwin_CheckCompletion + + delcom -buffer TestCommand + delcom TestCommand + delcom GetInput + unlet w:test_winvar + unlet b:test_bufvar + set wildmenu& wildchar& +endfunc + +func Test_cmdwin_ctrl_bsl() + " Using CTRL-\ CTRL-N in cmd window should close the window + call feedkeys("q:\<C-\>\<C-N>", 'xt') + call assert_equal('', getcmdwintype()) +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -416,100 +416,6 @@ func Test_compl_feedkeys() set completeopt& endfunc -func s:ComplInCmdwin_GlobalCompletion(a, l, p) - return 'global' -endfunc - -func s:ComplInCmdwin_LocalCompletion(a, l, p) - return 'local' -endfunc - -func Test_compl_in_cmdwin() - CheckFeature cmdwin - - set wildmenu wildchar=<Tab> - com! -nargs=1 -complete=command GetInput let input = <q-args> - com! -buffer TestCommand echo 'TestCommand' - let w:test_winvar = 'winvar' - let b:test_bufvar = 'bufvar' - - " User-defined commands - let input = '' - call feedkeys("q:iGetInput T\<C-x>\<C-v>\<CR>", 'tx!') - call assert_equal('TestCommand', input) - - let input = '' - call feedkeys("q::GetInput T\<Tab>\<CR>:q\<CR>", 'tx!') - call assert_equal('T', input) - - - com! -nargs=1 -complete=var GetInput let input = <q-args> - " Window-local variables - let input = '' - call feedkeys("q:iGetInput w:test_\<C-x>\<C-v>\<CR>", 'tx!') - call assert_equal('w:test_winvar', input) - - let input = '' - call feedkeys("q::GetInput w:test_\<Tab>\<CR>:q\<CR>", 'tx!') - call assert_equal('w:test_', input) - - " Buffer-local variables - let input = '' - call feedkeys("q:iGetInput b:test_\<C-x>\<C-v>\<CR>", 'tx!') - call assert_equal('b:test_bufvar', input) - - let input = '' - call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!') - call assert_equal('b:test_', input) - - - " Argument completion of buffer-local command - func s:ComplInCmdwin_GlobalCompletionList(a, l, p) - return ['global'] - endfunc - - func s:ComplInCmdwin_LocalCompletionList(a, l, p) - return ['local'] - endfunc - - func s:ComplInCmdwin_CheckCompletion(arg) - call assert_equal('local', a:arg) - endfunc - - com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion - \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) - com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion - \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) - call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') - - com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList - \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) - com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList - \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>) - - call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') - - func! s:ComplInCmdwin_CheckCompletion(arg) - call assert_equal('global', a:arg) - endfunc - new - call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!') - quit - - delfunc s:ComplInCmdwin_GlobalCompletion - delfunc s:ComplInCmdwin_LocalCompletion - delfunc s:ComplInCmdwin_GlobalCompletionList - delfunc s:ComplInCmdwin_LocalCompletionList - delfunc s:ComplInCmdwin_CheckCompletion - - delcom -buffer TestCommand - delcom TestCommand - delcom GetInput - unlet w:test_winvar - unlet b:test_bufvar - set wildmenu& wildchar& -endfunc - " Test for insert path completion with completeslash option func Test_ins_completeslash() CheckMSWindows @@ -2191,5 +2097,4 @@ func Test_complete_overrun() bwipe! endfunc - " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_normal.vim +++ b/src/testdir/test_normal.vim @@ -2945,12 +2945,6 @@ func Test_normal40_ctrl_bsl() call assert_false(&insertmode) call assert_beeps("normal! \<C-\>\<C-A>") - if has('cmdwin') - " Using CTRL-\ CTRL-N in cmd window should close the window - call feedkeys("q:\<C-\>\<C-N>", 'xt') - call assert_equal('', getcmdwintype()) - endif - " clean up bw! endfunc