From 0fcc7c6dd1902b71e0e7d0a35ddabafef6455a83 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 2 Jul 2016 21:22:52 +0200 Subject: patch 7.4.1984 Problem: Not all quickfix features are tested. Solution: Add a few more tests. (Yegappan Lakshmanan) --- src/testdir/test_quickfix.vim | 138 +++++++++++++++++++++++++++++++++++++++--- 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 0cea0e56c0..d624baf80a 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 caddbuffer command! -nargs=* Xrewind crewind command! -nargs=* -bang Xnext cnext + command! -nargs=* -bang Xprev cprev + command! -nargs=* -bang Xfirst cfirst + command! -nargs=* -bang Xlast clast + command! -nargs=* -bang Xnfile cnfile + command! -nargs=* -bang Xpfile cpfile command! -nargs=* Xexpr cexpr command! -nargs=* Xvimgrep vimgrep command! -nargs=* Xgrep grep @@ -48,6 +53,11 @@ function! s:setup_commands(cchar) command! -nargs=* Xaddbuffer laddbuffer command! -nargs=* Xrewind lrewind command! -nargs=* -bang Xnext lnext + command! -nargs=* -bang Xprev lprev + command! -nargs=* -bang Xfirst lfirst + command! -nargs=* -bang Xlast llast + command! -nargs=* -bang Xnfile lnfile + command! -nargs=* -bang Xpfile lpfile command! -nargs=* Xexpr lexpr command! -nargs=* Xvimgrep lvimgrep command! -nargs=* Xgrep lgrep @@ -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 e83eaf7611..3afe4a66b4 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1984, /**/ 1983, /**/ -- cgit v1.2.3