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 <expr> <F4> SaveLastScreenLine()
+ endfunc
+ 
+ func TearDown()
+   delfunc SaveLastScreenLine
+   cunmap <F4>
+ endfunc
+ 
  func Test_complete_tab()
    call writefile(['testfile'], 'Xtestfile')
    call feedkeys(":e Xtest\t\r", "tx")
***************
*** 25,30 ****
--- 38,80 ----
    " used.
    call feedkeys(":chistory \<C-D>\<C-B>\"\<CR>", 'xt')
    call assert_equal("\"chistory \<C-D>", @:)
+ 
+   " 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/\<C-D>\<F4>\<C-B>\"\<CR>", '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\<Tab>\<C-B>\"\<CR>", 'xt')
+     call assert_equal('"e Xtest\', @:)
+     set completeslash=slash
+     call feedkeys(":e Xtest\<Tab>\<C-B>\"\<CR>", 'xt')
+     call assert_equal('"e Xtest/', @:)
+     set completeslash&
+   endif
+ 
+   " Test for displaying the tail with wildcards
+   let g:Sline = ''
+   call feedkeys(":e Xtes?/\<C-D>\<F4>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('Xtest/a.c  Xtest/a.h', g:Sline)
+   call assert_equal('"e Xtes?/', @:)
+   let g:Sline = ''
+   call feedkeys(":e Xtes*/\<C-D>\<F4>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('Xtest/a.c  Xtest/a.h', g:Sline)
+   call assert_equal('"e Xtes*/', @:)
+   let g:Sline = ''
+   call feedkeys(":e Xtes[/\<C-D>\<F4>\<C-B>\"\<CR>", '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 <F3> :ls<CR>
    com -nargs=* -complete=mapping MyCmd
    call feedkeys(":MyCmd <F\<C-A>\<C-B>\"\<CR>", 'xt')
!   call assert_equal('"MyCmd <F3>', @:)
    mapclear
    delcom MyCmd
  
--- 1020,1026 ----
    map <F3> :ls<CR>
    com -nargs=* -complete=mapping MyCmd
    call feedkeys(":MyCmd <F\<C-A>\<C-B>\"\<CR>", 'xt')
!   call assert_equal('"MyCmd <F3> <F4>', @:)
    mapclear
    delcom MyCmd
  
***************
*** 1032,1037 ****
--- 1084,1092 ----
      call assert_equal('"e \~Xtest', @:)
      call delete('~Xtest')
    endif
+ 
+   call feedkeys(":py3f\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"py3file', @:)
  endfunc
  
  " Test for 'wildignorecase'
***************
*** 1041,1046 ****
--- 1096,1102 ----
    set wildignorecase
    call feedkeys(":e xt\<Tab>\<C-B>\"\<CR>", '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 <expr> <F2> SaveScreenLine()
- 
    set nowildmenu
    set wildmode=full,list
    let g:Sline = ''
!   call feedkeys(":MyCmd \t\t\<F2>\<C-B>\"\<CR>", '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\<F4>\<C-B>\"\<CR>", '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\<F2>\<C-B>\"\<CR>", '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\<F4>\<C-B>\"\<CR>", '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\<F2>\<C-B>\"\<CR>", '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\<F4>\<C-B>\"\<CR>", 'xt')
    call assert_equal('AAA    AAAA   AAAAA', g:Sline)
    call assert_equal('"b A', @:)
  
***************
*** 1670,1686 ****
    set wildmenu
    call feedkeys(":help a*\t\<C-B>\"\<CR>", 'xt')
    call assert_equal('"help a', @:)
    set wildmenu&
  
    %argdelete
    delcommand MyCmd
    delfunc T
-   delfunc SaveScreenLine
-   cunmap <F2>
    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\<C-B>\"\<CR>", 'xt')
    call assert_equal('"help a', @:)
+   " non existing file
+   call feedkeys(":e a1b2y3z4\t\<C-B>\"\<CR>", '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*\<C-A>\<C-B>\"\<CR>", 'xt')
    call assert_equal('"e Xfile Xfile.c Xfile.o', @:)
+   call feedkeys(":e Xfi*\<Tab>\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"e Xfile.c', @:)
    set suffixes=.c
    call feedkeys(":e Xfi*\<C-A>\<C-B>\"\<CR>", 'xt')
    call assert_equal('"e Xfile Xfile.o Xfile.c', @:)
+   call feedkeys(":e Xfi*\<Tab>\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"e Xfile.o', @:)
    set suffixes=,,
    call feedkeys(":e Xfi*\<C-A>\<C-B>\"\<CR>", 'xt')
    call assert_equal('"e Xfile.c Xfile.o Xfile', @:)
+   call feedkeys(":e Xfi*\<Tab>\<Tab>\<C-B>\"\<CR>", '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 -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220214111206.9C3921C0345%40moolenaar.net.

Raspunde prin e-mail lui