diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-02 21:22:52 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-02 21:22:52 +0200 |
commit | 0fcc7c6dd1902b71e0e7d0a35ddabafef6455a83 (patch) | |
tree | 68fdebc562a31a1d045c2661ec7144fea4a4222e /src | |
parent | 75464dc434c43efac60e8bfd9bec2a8b736407e9 (diff) | |
download | vim-git-0fcc7c6dd1902b71e0e7d0a35ddabafef6455a83.tar.gz |
patch 7.4.1984v7.4.1984
Problem: Not all quickfix features are tested.
Solution: Add a few more tests. (Yegappan Lakshmanan)
Diffstat (limited to 'src')
-rw-r--r-- | src/testdir/test_quickfix.vim | 138 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 133 insertions, 7 deletions
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 0cea0e56c..d624baf80 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -24,6 +24,11 @@ function! s:setup_commands(cchar) command! -nargs=* Xaddbuffer <mods>caddbuffer <args> command! -nargs=* Xrewind <mods>crewind <args> command! -nargs=* -bang Xnext <mods>cnext<bang> <args> + command! -nargs=* -bang Xprev <mods>cprev<bang> <args> + command! -nargs=* -bang Xfirst <mods>cfirst<bang> <args> + command! -nargs=* -bang Xlast <mods>clast<bang> <args> + command! -nargs=* -bang Xnfile <mods>cnfile<bang> <args> + command! -nargs=* -bang Xpfile <mods>cpfile<bang> <args> command! -nargs=* Xexpr <mods>cexpr <args> command! -nargs=* Xvimgrep <mods>vimgrep <args> command! -nargs=* Xgrep <mods> grep <args> @@ -48,6 +53,11 @@ function! s:setup_commands(cchar) command! -nargs=* Xaddbuffer <mods>laddbuffer <args> command! -nargs=* Xrewind <mods>lrewind <args> command! -nargs=* -bang Xnext <mods>lnext<bang> <args> + command! -nargs=* -bang Xprev <mods>lprev<bang> <args> + command! -nargs=* -bang Xfirst <mods>lfirst<bang> <args> + command! -nargs=* -bang Xlast <mods>llast<bang> <args> + command! -nargs=* -bang Xnfile <mods>lnfile<bang> <args> + command! -nargs=* -bang Xpfile <mods>lpfile<bang> <args> command! -nargs=* Xexpr <mods>lexpr <args> command! -nargs=* Xvimgrep <mods>lvimgrep <args> command! -nargs=* Xgrep <mods> lgrep <args> @@ -310,6 +320,56 @@ function Test_cbuffer() call XbufferTests('l') endfunction +function XexprTests(cchar) + call s:setup_commands(a:cchar) + + call assert_fails('Xexpr 10', 'E777:') +endfunction + +function Test_cexpr() + call XexprTests('c') + call XexprTests('l') +endfunction + +" Tests for :cnext, :cprev, :cfirst, :clast commands +function Xtest_browse(cchar) + call s:setup_commands(a:cchar) + + call s:create_test_file('Xqftestfile1') + call s:create_test_file('Xqftestfile2') + + Xgetexpr ['Xqftestfile1:5:Line5', + \ 'Xqftestfile1:6:Line6', + \ 'Xqftestfile2:10:Line10', + \ 'Xqftestfile2:11:Line11'] + + Xfirst + call assert_fails('Xprev', 'E553') + call assert_fails('Xpfile', 'E553') + Xnfile + call assert_equal('Xqftestfile2', bufname('%')) + call assert_equal(10, line('.')) + Xpfile + call assert_equal('Xqftestfile1', bufname('%')) + call assert_equal(6, line('.')) + Xlast + call assert_equal('Xqftestfile2', bufname('%')) + call assert_equal(11, line('.')) + call assert_fails('Xnext', 'E553') + call assert_fails('Xnfile', 'E553') + Xrewind + call assert_equal('Xqftestfile1', bufname('%')) + call assert_equal(5, line('.')) + + call delete('Xqftestfile1') + call delete('Xqftestfile2') +endfunction + +function Test_browse() + call Xtest_browse('c') + call Xtest_browse('l') +endfunction + function Test_nomem() call test_alloc_fail(GetAllocId('qf_dirname_start'), 0, 0) call assert_fails('vimgrep vim runtest.vim', 'E342:') @@ -754,25 +814,61 @@ function! Test_efm_dirstack() call delete('habits1.txt') endfunction +" Tests for invalid error format specifies +function Xinvalid_efm_Tests(cchar) + call s:setup_commands(a:cchar) + + let save_efm = &efm + + set efm=%f:%l:%m,%f:%f:%l:%m + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E372:') + + set efm=%f:%l:%m,%f:%l:%r:%m + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E373:') + + set efm=%f:%l:%m,%O:%f:%l:%m + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E373:') + + set efm=%f:%l:%m,%f:%l:%*[^a-z + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E374:') + + set efm=%f:%l:%m,%f:%l:%*c + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E375:') + + set efm=%f:%l:%m,%L%M%N + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E376:') + + set efm=%f:%l:%m,%f:%l:%m:%R + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E377:') + + set efm= + call assert_fails('Xexpr "abc.txt:1:Hello world"', 'E378:') + + set efm=%DEntering\ dir\ abc,%f:%l:%m + call assert_fails('Xexpr ["Entering dir abc", "abc.txt:1:Hello world"]', 'E379:') + + let &efm = save_efm +endfunction + +function Test_invalid_efm() + call Xinvalid_efm_Tests('c') + call Xinvalid_efm_Tests('l') +endfunction + " TODO: " Add tests for the following formats in 'errorformat' -" %n %t %r %+ %- %O +" %r %O function! Test_efm2() let save_efm = &efm - " Test for invalid efm - set efm=%L%M%N - call assert_fails('cexpr "abc.txt:1:Hello world"', 'E376:') - call assert_fails('lexpr "abc.txt:1:Hello world"', 'E376:') - " Test for %s format in efm set efm=%f:%s cexpr 'Xtestfile:Line search text' - let l = getqflist() call assert_equal(l[0].pattern, '^\VLine search text\$') call assert_equal(l[0].lnum, 0) + " Test for %P, %Q and %t format specifiers let lines=["[Xtestfile1]", \ "(1,17) error: ';' missing", \ "(21,2) warning: variable 'z' not defined", @@ -794,6 +890,34 @@ function! Test_efm2() call assert_equal(9, len(l)) call assert_equal(21, l[2].lnum) call assert_equal(2, l[2].col) + call assert_equal('w', l[2].type) + call assert_equal('e', l[3].type) + + " Tests for %E, %C and %Z format specifiers + let lines = ["Error 275", + \ "line 42", + \ "column 3", + \ "' ' expected after '--'" + \] + set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m + cgetexpr lines + let l = getqflist() + call assert_equal(275, l[0].nr) + call assert_equal(42, l[0].lnum) + call assert_equal(3, l[0].col) + call assert_equal('E', l[0].type) + call assert_equal("\n' ' expected after '--'", l[0].text) + + " Test for %> + let lines = ["Error in line 147 of foo.c:", + \"unknown variable 'i'" + \] + set efm=unknown\ variable\ %m,%E%>Error\ in\ line\ %l\ of\ %f:,%Z%m + cgetexpr lines + let l = getqflist() + call assert_equal(147, l[0].lnum) + call assert_equal('E', l[0].type) + call assert_equal("\nunknown variable 'i'", l[0].text) let &efm = save_efm endfunction diff --git a/src/version.c b/src/version.c index e83eaf761..3afe4a66b 100644 --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1984, +/**/ 1983, /**/ 1982, |