Patch 7.4.2194
Problem:    Sign tests don't cover enough.
Solution:   Add more test cases. (Dominique Pelle)
Files:      src/testdir/test_signs.vim,


*** ../vim-7.4.2193/src/testdir/test_signs.vim  2016-08-08 22:26:37.989926409 
+0200
--- src/testdir/test_signs.vim  2016-08-10 21:32:32.409145706 +0200
***************
*** 8,43 ****
    new
    call setline(1, ['a', 'b', 'c', 'd'])
  
    sign define Sign1 text=x
!   sign define Sign2 text=y
  
    " Test listing signs.
    let a=execute('sign list')
!   call assert_equal("\nsign Sign1 text=x \nsign Sign2 text=y ", a)
  
    let a=execute('sign list Sign1')
    call assert_equal("\nsign Sign1 text=x ", a)
  
!   " Place the sign at line 3,then check that we can jump to it.
!   exe 'sign place 42 line=3 name=Sign1 buffer=' . bufnr('')
    1
!   exe 'sign jump 42 buffer=' . bufnr('')
    call assert_equal('c', getline('.'))
  
!   " Can't change sign.
!   call assert_fails("exe 'sign place 43 name=Sign1 buffer=' . bufnr('')", 
'E885:')
  
    let a=execute('sign place')
!   call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n    line=3  id=42  
name=Sign1\n", a)
  
!   " Unplace the sign and try jumping to it again should now fail.
!   sign unplace 42
    1
!   call assert_fails("exe 'sign jump 42 buffer=' . bufnr('')", 'E157:')
    call assert_equal('a', getline('.'))
  
    " Unplace sign on current line.
!   exe 'sign place 43 line=4 name=Sign2 buffer=' . bufnr('')
    4
    sign unplace
    let a=execute('sign place')
--- 8,78 ----
    new
    call setline(1, ['a', 'b', 'c', 'd'])
  
+   " Define some signs.
+   " We can specify icons even if not all versions of vim support icons as
+   " icon is ignored when not supported.  "(not supported)" is shown after
+   " the icon name when listing signs.
    sign define Sign1 text=x
!   try
!     sign define Sign2 text=xy texthl=Title linehl=Error 
icon=../../pixmaps/stock_vim_find_help.png
!   catch /E255:/
!     " ignore error: E255: Couldn't read in sign data!
!     " This error can happen when running in gui.
!     " Some gui like Motif do not support the png icon format.
!   endtry
  
    " Test listing signs.
    let a=execute('sign list')
!   call assert_match("^\nsign Sign1 text=x \nsign Sign2 
icon=../../pixmaps/stock_vim_find_help.png .*text=xy linehl=Error 
texthl=Title$", a)
  
    let a=execute('sign list Sign1')
    call assert_equal("\nsign Sign1 text=x ", a)
  
!   " Split the window to the bottom to verify sign jump will stay in the 
current window
!   " if the buffer is displayed there.
!   let bn = bufnr('%')
!   let wn = winnr()
!   exe 'sign place 41 line=3 name=Sign1 buffer=' . bn 
!   1
!   bot split
!   exe 'sign jump 41 buffer=' . bufnr('%')
!   call assert_equal('c', getline('.'))
!   call assert_equal(3, winnr())
!   call assert_equal(bn, bufnr('%'))
!   call assert_notequal(wn, winnr())
! 
!   " Create a new buffer and check that ":sign jump" switches to the old 
buffer.
    1
!   new foo
!   call assert_notequal(bn, bufnr('%'))
!   exe 'sign jump 41 buffer=' . bn
!   call assert_equal(bn, bufnr('%'))
    call assert_equal('c', getline('.'))
  
!   " Redraw to make sure that screen redraw with sign gets exercised,
!   " with and without 'rightleft'.
!   if has('rightleft')
!     set rightleft
!     redraw
!     set norightleft
!   endif
!   redraw
  
+   " Check that we can't change sign.
+   call assert_fails("exe 'sign place 40 name=Sign1 buffer=' . bufnr('%')", 
'E885:')
+ 
+   " Check placed signs
    let a=execute('sign place')
!   call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n    line=3  id=41  
name=Sign1\n", a)
  
!   " Unplace the sign and try jumping to it again should fail.
!   sign unplace 41
    1
!   call assert_fails("exe 'sign jump 41 buffer=' . bufnr('%')", 'E157:')
    call assert_equal('a', getline('.'))
  
    " Unplace sign on current line.
!   exe 'sign place 42 line=4 name=Sign2 buffer=' . bufnr('%')
    4
    sign unplace
    let a=execute('sign place')
***************
*** 47,62 ****
    call assert_fails('sign unplace', 'E159:')
  
    " Unplace all signs.
!   exe 'sign place 42 line=3 name=Sign1 buffer=' . bufnr('')
    sign unplace *
    let a=execute('sign place')
    call assert_equal("\n--- Signs ---\n", a)
  
    " After undefining the sign, we should no longer be able to place it.
    sign undefine Sign1
    sign undefine Sign2
!   call assert_fails("exe 'sign place 42 line=3 name=Sign1 buffer=' . 
bufnr('')", 'E155:')
  
  endfunc
  
  func Test_sign_completion()
--- 82,135 ----
    call assert_fails('sign unplace', 'E159:')
  
    " Unplace all signs.
!   exe 'sign place 41 line=3 name=Sign1 buffer=' . bufnr('%')
    sign unplace *
    let a=execute('sign place')
    call assert_equal("\n--- Signs ---\n", a)
  
+   " Check :jump with file=...
+   edit foo
+   call setline(1, ['A', 'B', 'C', 'D'])
+ 
+   try
+     sign define Sign3 text=y texthl=DoesNotExist linehl=DoesNotExist 
icon=doesnotexist.xpm
+   catch /E255:/
+     " ignore error: E255: it can happens for guis.
+   endtry
+ 
+   let fn = expand('%:p')
+   exe 'sign place 43 line=2 name=Sign3 file=' . fn
+   edit bar
+   call assert_notequal(fn, expand('%:p'))
+   exe 'sign jump 43 file=' . fn
+   call assert_equal('B', getline('.'))
+ 
    " After undefining the sign, we should no longer be able to place it.
    sign undefine Sign1
    sign undefine Sign2
!   sign undefine Sign3
!   call assert_fails("exe 'sign place 41 line=3 name=Sign1 buffer=' . 
bufnr('%')", 'E155:')
! endfunc
  
+ " Undefining placed sign is not recommended.
+ " Quoting :help sign
+ "
+ " :sign undefine {name}
+ "                Deletes a previously defined sign.  If signs with this {name}
+ "                are still placed this will cause trouble.
+ func Test_sign_undefine_still_placed()
+   new foobar
+   sign define Sign text=x
+   exe 'sign place 41 line=1 name=Sign buffer=' . bufnr('%')
+   sign undefine Sign
+ 
+   " Listing placed sign should show that sign is deleted.
+   let a=execute('sign place')
+   call assert_equal("\n--- Signs ---\nSigns for foobar:\n    line=1  id=41  
name=[Deleted]\n", a)
+ 
+   sign unplace 41
+   let a=execute('sign place')
+   call assert_equal("\n--- Signs ---\n", a)
  endfunc
  
  func Test_sign_completion()
***************
*** 72,77 ****
--- 145,153 ----
    call feedkeys(":sign define Sign linehl=Spell\<C-A>\<C-B>\"\<CR>", 'tx')
    call assert_equal('"sign define Sign linehl=SpellBad SpellCap SpellLocal 
SpellRare', @:)
  
+   call feedkeys(":sign define Sign 
icon=../../pixmaps/tb_p\<C-A>\<C-B>\"\<CR>", 'tx')
+   call assert_equal('"sign define Sign icon=../../pixmaps/tb_paste.xpm 
../../pixmaps/tb_print.xpm', @:)
+ 
    call feedkeys(":sign undefine \<C-A>\<C-B>\"\<CR>", 'tx')
    call assert_equal('"sign undefine Sign1 Sign2', @:)
  
***************
*** 92,104 ****
  
    sign undefine Sign1
    sign undefine Sign2
- 
  endfunc
  
  func Test_sign_invalid_commands()
    call assert_fails('sign', 'E471:')
    call assert_fails('sign xxx', 'E160:')
    call assert_fails('sign define', 'E156:')
    call assert_fails('sign undefine', 'E156:')
    call assert_fails('sign list xxx', 'E155:')
    call assert_fails('sign place 1 buffer=', 'E158:')
--- 168,181 ----
  
    sign undefine Sign1
    sign undefine Sign2
  endfunc
  
  func Test_sign_invalid_commands()
    call assert_fails('sign', 'E471:')
+   call assert_fails('sign jump', 'E471:')
    call assert_fails('sign xxx', 'E160:')
    call assert_fails('sign define', 'E156:')
+   call assert_fails('sign define Sign1 xxx', 'E475:')
    call assert_fails('sign undefine', 'E156:')
    call assert_fails('sign list xxx', 'E155:')
    call assert_fails('sign place 1 buffer=', 'E158:')
*** ../vim-7.4.2193/src/version.c       2016-08-10 21:28:41.059332614 +0200
--- src/version.c       2016-08-10 21:33:21.952677853 +0200
***************
*** 765,766 ****
--- 765,768 ----
  {   /* Add new patch number below this line */
+ /**/
+     2194,
  /**/

-- 
Often you're less important than your furniture.  If you think about it, you
can get fired but your furniture stays behind, gainfully employed at the
company that didn't need _you_ anymore.
                                (Scott Adams - The Dilbert principle)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            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].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui