Patch 7.4.1053
Problem:    Insufficient testing for quickfix commands.
Solution:   Add a new style quickfix test. (Yegappan Lakshmanan)
Files:      src/testdir/Make_all.mak, src/testdir/test_quickfix.vim


*** ../vim-7.4.1052/src/testdir/Make_all.mak    2016-01-03 22:47:52.987427330 
+0100
--- src/testdir/Make_all.mak    2016-01-05 21:53:22.104359625 +0100
***************
*** 174,179 ****
--- 174,180 ----
  # Keep test_alot.res as the last one, sort the others.
  NEW_TESTS = test_assert.res \
            test_cdo.res \
+           test_quickfix.res \
            test_viml.res \
            test_alot.res
  
*** ../vim-7.4.1052/src/testdir/test_quickfix.vim       2016-01-05 
21:56:54.558014196 +0100
--- src/testdir/test_quickfix.vim       2016-01-05 21:50:52.522011511 +0100
***************
*** 0 ****
--- 1,275 ----
+ " Test for the quickfix commands.
+ 
+ if !has('quickfix')
+   finish
+ endif
+ 
+ " Tests for the :clist and :llist commands
+ function XlistTests(cchar)
+   let Xlist = a:cchar . 'list'
+   let Xgetexpr = a:cchar . 'getexpr'
+ 
+   " With an empty list, command should return error
+   exe Xgetexpr . ' []'
+   exe 'silent! ' . Xlist
+   call assert_true(v:errmsg ==# 'E42: No Errors')
+ 
+   " Populate the list and then try
+   exe Xgetexpr . " ['non-error 1', 'Xtestfile1:1:3:Line1',
+                 \ 'non-error 2', 'Xtestfile2:2:2:Line2',
+                 \ 'non-error 3', 'Xtestfile3:3:1:Line3']"
+ 
+   " List only valid entries
+   redir => result
+   exe Xlist
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 2 Xtestfile1:1 col 3: Line1',
+                  \ ' 4 Xtestfile2:2 col 2: Line2',
+                  \ ' 6 Xtestfile3:3 col 1: Line3'], l)
+ 
+   " List all the entries
+   redir => result
+   exe Xlist . "!"
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 1: non-error 1', ' 2 Xtestfile1:1 col 3: Line1',
+                  \ ' 3: non-error 2', ' 4 Xtestfile2:2 col 2: Line2',
+                  \ ' 5: non-error 3', ' 6 Xtestfile3:3 col 1: Line3'], l)
+ 
+   " List a range of errors
+   redir => result
+   exe Xlist . " 3,6"
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 4 Xtestfile2:2 col 2: Line2',
+                  \ ' 6 Xtestfile3:3 col 1: Line3'], l)
+ 
+   redir => result
+   exe Xlist . "! 3,4"
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 3: non-error 2', ' 4 Xtestfile2:2 col 2: Line2'], l)
+ 
+   redir => result
+   exe Xlist . " -6,-4"
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 2 Xtestfile1:1 col 3: Line1'], l)
+ 
+   redir => result
+   exe Xlist . "! -5,-3"
+   redir END
+   let l = split(result, "\n")
+   call assert_equal([' 2 Xtestfile1:1 col 3: Line1',
+                  \ ' 3: non-error 2', ' 4 Xtestfile2:2 col 2: Line2'], l)
+ endfunction
+ 
+ function Test_clist()
+   call XlistTests('c')
+   call XlistTests('l')
+ endfunction
+ 
+ " Tests for the :colder, :cnewer, :lolder and :lnewer commands
+ " Note that this test assumes that a quickfix/location list is
+ " already set by previous tests
+ function XageTests(cchar)
+   let Xolder = a:cchar . 'older'
+   let Xnewer = a:cchar . 'newer'
+   let Xgetexpr = a:cchar . 'getexpr'
+   if a:cchar == 'c'
+     let Xgetlist = 'getqflist()'
+   else
+     let Xgetlist = 'getloclist(0)'
+   endif
+ 
+   " Jumping to a non existent list should return error
+   exe 'silent! ' . Xolder . ' 99'
+   call assert_true(v:errmsg ==# 'E380: At bottom of quickfix stack')
+ 
+   exe 'silent! ' . Xnewer . ' 99'
+   call assert_true(v:errmsg ==# 'E381: At top of quickfix stack')
+ 
+   " Add three quickfix/location lists
+   exe Xgetexpr . " ['Xtestfile1:1:3:Line1']"
+   exe Xgetexpr . " ['Xtestfile2:2:2:Line2']"
+   exe Xgetexpr . " ['Xtestfile3:3:1:Line3']"
+ 
+   " Go back two lists
+   exe Xolder
+   exe 'let l = ' . Xgetlist
+   call assert_equal('Line2', l[0].text)
+ 
+   " Go forward two lists
+   exe Xnewer
+   exe 'let l = ' . Xgetlist
+   call assert_equal('Line3', l[0].text)
+ 
+   " Test for the optional count argument
+   exe Xolder . ' 2'
+   exe 'let l = ' . Xgetlist
+   call assert_equal('Line1', l[0].text)
+ 
+   exe Xnewer . ' 2'
+   exe 'let l = ' . Xgetlist
+   call assert_equal('Line3', l[0].text)
+ endfunction
+ 
+ function Test_cage()
+   call XageTests('c')
+   call XageTests('l')
+ endfunction
+ 
+ " Tests for the :cwindow, :lwindow :cclose, :lclose, :copen and :lopen
+ " commands
+ function XwindowTests(cchar)
+   let Xwindow = a:cchar . 'window'
+   let Xclose = a:cchar . 'close'
+   let Xopen = a:cchar . 'open'
+   let Xgetexpr = a:cchar . 'getexpr'
+ 
+   " Create a list with no valid entries
+   exe Xgetexpr . " ['non-error 1', 'non-error 2', 'non-error 3']"
+ 
+   " Quickfix/Location window should not open with no valid errors
+   exe Xwindow
+   call assert_true(winnr('$') == 1)
+ 
+   " Create a list with valid entries
+   exe Xgetexpr . " ['Xtestfile1:1:3:Line1', 'Xtestfile2:2:2:Line2',
+                 \ 'Xtestfile3:3:1:Line3']"
+ 
+   " Open the window
+   exe Xwindow
+   call assert_true(winnr('$') == 2 && winnr() == 2 &&
+       \ getline('.') ==# 'Xtestfile1|1 col 3| Line1')
+ 
+   " Close the window
+   exe Xclose
+   call assert_true(winnr('$') == 1)
+ 
+   " Create a list with no valid entries
+   exe Xgetexpr . " ['non-error 1', 'non-error 2', 'non-error 3']"
+ 
+   " Open the window
+   exe Xopen . ' 5'
+   call assert_true(winnr('$') == 2 && getline('.') ==# '|| non-error 1'
+                     \  && winheight('.') == 5)
+ 
+   " Opening the window again, should move the cursor to that window
+   wincmd t
+   exe Xopen . ' 7'
+   call assert_true(winnr('$') == 2 && winnr() == 2 &&
+       \ winheight('.') == 7 &&
+       \ getline('.') ==# '|| non-error 1')
+ 
+ 
+   " Calling cwindow should close the quickfix window with no valid errors
+   exe Xwindow
+   call assert_true(winnr('$') == 1)
+ endfunction
+ 
+ function Test_cwindow()
+   call XwindowTests('c')
+   call XwindowTests('l')
+ endfunction
+ 
+ " Tests for the :cfile, :lfile, :caddfile, :laddfile, :cgetfile and :lgetfile
+ " commands.
+ function XfileTests(cchar)
+   let Xfile = a:cchar . 'file'
+   let Xgetfile = a:cchar . 'getfile'
+   let Xaddfile = a:cchar . 'addfile'
+   if a:cchar == 'c'
+     let Xgetlist = 'getqflist()'
+   else
+     let Xgetlist = 'getloclist(0)'
+   endif
+ 
+   call writefile(['Xtestfile1:700:10:Line 700',
+       \ 'Xtestfile2:800:15:Line 800'], 'Xqftestfile1')
+ 
+   enew!
+   exe Xfile . ' Xqftestfile1'
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 2 &&
+       \ l[0].lnum == 700 && l[0].col == 10 && l[0].text ==# 'Line 700' &&
+       \ l[1].lnum == 800 && l[1].col == 15 && l[1].text ==# 'Line 800')
+ 
+   " Run cfile/lfile from a modified buffer
+   enew!
+   silent! put ='Quickfix'
+   exe 'silent! ' . Xfile . ' Xqftestfile1'
+   call assert_true(v:errmsg ==# 'E37: No write since last change (add ! to 
override)')
+ 
+   call writefile(['Xtestfile3:900:30:Line 900'], 'Xqftestfile1')
+   exe Xaddfile . ' Xqftestfile1'
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 3 &&
+       \ l[2].lnum == 900 && l[2].col == 30 && l[2].text ==# 'Line 900')
+ 
+   call writefile(['Xtestfile1:222:77:Line 222',
+       \ 'Xtestfile2:333:88:Line 333'], 'Xqftestfile1')
+ 
+   enew!
+   exe Xgetfile . ' Xqftestfile1'
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 2 &&
+       \ l[0].lnum == 222 && l[0].col == 77 && l[0].text ==# 'Line 222' &&
+       \ l[1].lnum == 333 && l[1].col == 88 && l[1].text ==# 'Line 333')
+ 
+   call delete('Xqftestfile1')
+ endfunction
+ 
+ function Test_cfile()
+   call XfileTests('c')
+   call XfileTests('l')
+ endfunction
+ 
+ " Tests for the :cbuffer, :lbuffer, :caddbuffer, :laddbuffer, :cgetbuffer and
+ " :lgetbuffer commands.
+ function XbufferTests(cchar)
+   let Xbuffer = a:cchar . 'buffer'
+   let Xgetbuffer = a:cchar . 'getbuffer'
+   let Xaddbuffer = a:cchar . 'addbuffer'
+   if a:cchar == 'c'
+     let Xgetlist = 'getqflist()'
+   else
+     let Xgetlist = 'getloclist(0)'
+   endif
+ 
+   enew!
+   silent! call setline(1, ['Xtestfile7:700:10:Line 700',
+       \ 'Xtestfile8:800:15:Line 800'])
+   exe Xbuffer . "!"
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 2 &&
+       \ l[0].lnum == 700 && l[0].col == 10 && l[0].text ==# 'Line 700' &&
+       \ l[1].lnum == 800 && l[1].col == 15 && l[1].text ==# 'Line 800')
+ 
+   enew!
+   silent! call setline(1, ['Xtestfile9:900:55:Line 900',
+       \ 'Xtestfile10:950:66:Line 950'])
+   exe Xgetbuffer
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 2 &&
+       \ l[0].lnum == 900 && l[0].col == 55 && l[0].text ==# 'Line 900' &&
+       \ l[1].lnum == 950 && l[1].col == 66 && l[1].text ==# 'Line 950')
+ 
+   enew!
+   silent! call setline(1, ['Xtestfile11:700:20:Line 700',
+       \ 'Xtestfile12:750:25:Line 750'])
+   exe Xaddbuffer
+   exe 'let l = ' . Xgetlist
+   call assert_true(len(l) == 4 &&
+       \ l[1].lnum == 950 && l[1].col == 66 && l[1].text ==# 'Line 950' &&
+       \ l[2].lnum == 700 && l[2].col == 20 && l[2].text ==# 'Line 700' &&
+       \ l[3].lnum == 750 && l[3].col == 25 && l[3].text ==# 'Line 750')
+ 
+ endfunction
+ 
+ function Test_cbuffer()
+   call XbufferTests('c')
+   call XbufferTests('l')
+ endfunction
+ 
*** ../vim-7.4.1052/src/version.c       2016-01-05 20:46:11.260645694 +0100
--- src/version.c       2016-01-05 21:52:13.405118235 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     1053,
  /**/

-- 
A special law prohibits unmarried women from parachuting on Sunday or she
shall risk arrest, fine, and/or jailing.
                [real standing law in Florida, United States of America]

 /// 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