To: vim_dev@googlegroups.com Subject: Patch 8.2.4376 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4376 Problem: Not enough tests for command line completion. Solution: Add a few more tests. (Yegappan Lakshmanan, closes #9771) Files: src/testdir/test_cmdline.vim, src/testdir/test_usercommands.vim *** ../vim-8.2.4375/src/testdir/test_cmdline.vim 2022-02-13 11:45:05.407225148 +0000 --- src/testdir/test_cmdline.vim 2022-02-14 11:08:52.801855686 +0000 *************** *** 5,10 **** --- 5,23 ---- source view_util.vim source shared.vim + func SetUp() + func SaveLastScreenLine() + let g:Sline = Screenline(&lines - 1) + return '' + endfunc + cnoremap SaveLastScreenLine() + endfunc + + func TearDown() + delfunc SaveLastScreenLine + cunmap + endfunc + func Test_complete_tab() call writefile(['testfile'], 'Xtestfile') call feedkeys(":e Xtest\t\r", "tx") *************** *** 25,30 **** --- 38,80 ---- " used. call feedkeys(":chistory \\\"\", 'xt') call assert_equal("\"chistory \", @:) + + " Test for displaying the tail of the completion matches + set wildmode=longest,full + call mkdir('Xtest') + call writefile([], 'Xtest/a.c') + call writefile([], 'Xtest/a.h') + let g:Sline = '' + call feedkeys(":e Xtest/\\\\"\", 'xt') + call assert_equal('a.c a.h', g:Sline) + call assert_equal('"e Xtest/', @:) + if has('win32') + " Test for 'completeslash' + set completeslash=backslash + call feedkeys(":e Xtest\\\"\", 'xt') + call assert_equal('"e Xtest\', @:) + set completeslash=slash + call feedkeys(":e Xtest\\\"\", 'xt') + call assert_equal('"e Xtest/', @:) + set completeslash& + endif + + " Test for displaying the tail with wildcards + let g:Sline = '' + call feedkeys(":e Xtes?/\\\\"\", 'xt') + call assert_equal('Xtest/a.c Xtest/a.h', g:Sline) + call assert_equal('"e Xtes?/', @:) + let g:Sline = '' + call feedkeys(":e Xtes*/\\\\"\", 'xt') + call assert_equal('Xtest/a.c Xtest/a.h', g:Sline) + call assert_equal('"e Xtes*/', @:) + let g:Sline = '' + call feedkeys(":e Xtes[/\\\\"\", 'xt') + call assert_equal(':e Xtes[/', g:Sline) + call assert_equal('"e Xtes[/', @:) + + call delete('Xtest', 'rf') + set wildmode& endfunc func Test_complete_wildmenu() *************** *** 280,285 **** --- 330,337 ---- args a.c b.c let l = getcompletion('', 'arglist') call assert_equal(['a.c', 'b.c'], l) + let l = getcompletion('a.', 'buffer') + call assert_equal(['a.c'], l) %argdelete let l = getcompletion('', 'augroup') *************** *** 968,974 **** map :ls com -nargs=* -complete=mapping MyCmd call feedkeys(":MyCmd \\"\", 'xt') ! call assert_equal('"MyCmd ', @:) mapclear delcom MyCmd --- 1020,1026 ---- map :ls com -nargs=* -complete=mapping MyCmd call feedkeys(":MyCmd \\"\", 'xt') ! call assert_equal('"MyCmd ', @:) mapclear delcom MyCmd *************** *** 1032,1037 **** --- 1084,1092 ---- call assert_equal('"e \~Xtest', @:) call delete('~Xtest') endif + + call feedkeys(":py3f\\\"\", 'xt') + call assert_equal('"py3file', @:) endfunc " Test for 'wildignorecase' *************** *** 1041,1046 **** --- 1096,1102 ---- set wildignorecase call feedkeys(":e xt\\\"\", 'xt') call assert_equal('"e XTEST', @:) + call assert_equal(['XTEST'], getcompletion('xt', 'file')) set wildignorecase& call delete('XTEST') endfunc *************** *** 1610,1631 **** endfunc " Test for 'wildmode' ! func Test_wildmode() func T(a, c, p) return "oneA\noneB\noneC" endfunc command -nargs=1 -complete=custom,T MyCmd - func SaveScreenLine() - let g:Sline = Screenline(&lines - 1) - return '' - endfunc - cnoremap SaveScreenLine() - set nowildmenu set wildmode=full,list let g:Sline = '' ! call feedkeys(":MyCmd \t\t\\\"\", 'xt') call assert_equal('oneA oneB oneC', g:Sline) call assert_equal('"MyCmd oneA', @:) --- 1666,1681 ---- endfunc " Test for 'wildmode' ! func Wildmode_tests() func T(a, c, p) return "oneA\noneB\noneC" endfunc command -nargs=1 -complete=custom,T MyCmd set nowildmenu set wildmode=full,list let g:Sline = '' ! call feedkeys(":MyCmd \t\t\\\"\", 'xt') call assert_equal('oneA oneB oneC', g:Sline) call assert_equal('"MyCmd oneA', @:) *************** *** 1641,1647 **** set wildmode=list:longest let g:Sline = '' ! call feedkeys(":MyCmd \t\\\"\", 'xt') call assert_equal('oneA oneB oneC', g:Sline) call assert_equal('"MyCmd one', @:) --- 1691,1697 ---- set wildmode=list:longest let g:Sline = '' ! call feedkeys(":MyCmd \t\\\"\", 'xt') call assert_equal('oneA oneB oneC', g:Sline) call assert_equal('"MyCmd one', @:) *************** *** 1660,1666 **** " Test for listing files with wildmode=list set wildmode=list let g:Sline = '' ! call feedkeys(":b A\t\t\\\"\", 'xt') call assert_equal('AAA AAAA AAAAA', g:Sline) call assert_equal('"b A', @:) --- 1710,1716 ---- " Test for listing files with wildmode=list set wildmode=list let g:Sline = '' ! call feedkeys(":b A\t\t\\\"\", 'xt') call assert_equal('AAA AAAA AAAAA', g:Sline) call assert_equal('"b A', @:) *************** *** 1670,1686 **** set wildmenu call feedkeys(":help a*\t\\"\", 'xt') call assert_equal('"help a', @:) set wildmenu& %argdelete delcommand MyCmd delfunc T - delfunc SaveScreenLine - cunmap set wildmode& %bwipe! endfunc " Test for interrupting the command-line completion func Test_interrupt_compl() func F(lead, cmdl, p) --- 1720,1748 ---- set wildmenu call feedkeys(":help a*\t\\"\", 'xt') call assert_equal('"help a', @:) + " non existing file + call feedkeys(":e a1b2y3z4\t\\"\", 'xt') + call assert_equal('"e a1b2y3z4', @:) set wildmenu& %argdelete delcommand MyCmd delfunc T set wildmode& %bwipe! endfunc + func Test_wildmode() + " Test with utf-8 encoding + call Wildmode_tests() + + " Test with latin1 encoding + let save_encoding = &encoding + set encoding=latin1 + call Wildmode_tests() + let &encoding = save_encoding + endfunc + " Test for interrupting the command-line completion func Test_interrupt_compl() func F(lead, cmdl, p) *************** *** 2000,2012 **** --- 2062,2083 ---- set suffixes= call feedkeys(":e Xfi*\\\"\", 'xt') call assert_equal('"e Xfile Xfile.c Xfile.o', @:) + call feedkeys(":e Xfi*\\\\"\", 'xt') + call assert_equal('"e Xfile.c', @:) set suffixes=.c call feedkeys(":e Xfi*\\\"\", 'xt') call assert_equal('"e Xfile Xfile.o Xfile.c', @:) + call feedkeys(":e Xfi*\\\\"\", 'xt') + call assert_equal('"e Xfile.o', @:) set suffixes=,, call feedkeys(":e Xfi*\\\"\", 'xt') call assert_equal('"e Xfile.c Xfile.o Xfile', @:) + call feedkeys(":e Xfi*\\\\"\", 'xt') + call assert_equal('"e Xfile.o', @:) set suffixes& + " Test for getcompletion() with different patterns + call assert_equal(['Xfile', 'Xfile.c', 'Xfile.o'], getcompletion('Xfile', 'file')) + call assert_equal(['Xfile'], getcompletion('Xfile$', 'file')) call delete('Xfile') call delete('Xfile.c') call delete('Xfile.o') *** ../vim-8.2.4375/src/testdir/test_usercommands.vim 2022-02-13 11:45:05.407225148 +0000 --- src/testdir/test_usercommands.vim 2022-02-14 11:08:52.801855686 +0000 *************** *** 314,320 **** endfunc func CustomCompleteList(A, L, P) ! return [ "Monday", "Tuesday", "Wednesday", {}] endfunc func Test_CmdCompletion() --- 314,320 ---- endfunc func CustomCompleteList(A, L, P) ! return [ "Monday", "Tuesday", "Wednesday", {}, test_null_string()] endfunc func Test_CmdCompletion() *** ../vim-8.2.4375/src/version.c 2022-02-13 21:51:02.396484119 +0000 --- src/version.c 2022-02-14 11:10:26.833569990 +0000 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 4376, /**/ -- Nothing is fool-proof to a sufficiently talented fool. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///