diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-09-06 06:28:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-06 06:28:03 +0800 |
commit | 33d6cf70ccc9eedac75299da4ce6dbf19eeb996a (patch) | |
tree | fb533e09798cbe9a28c5c99c9a4bf5399396a07c | |
parent | 4ce9875feb7b61b46bcb299485cdb85fe80191d3 (diff) | |
download | rneovim-33d6cf70ccc9eedac75299da4ce6dbf19eeb996a.tar.gz rneovim-33d6cf70ccc9eedac75299da4ce6dbf19eeb996a.tar.bz2 rneovim-33d6cf70ccc9eedac75299da4ce6dbf19eeb996a.zip |
test(old): reorder test_quickfix.vim to match upstream (#25029)
-rw-r--r-- | test/old/testdir/test_quickfix.vim | 459 |
1 files changed, 228 insertions, 231 deletions
diff --git a/test/old/testdir/test_quickfix.vim b/test/old/testdir/test_quickfix.vim index e61da49584..ebf1bfdc64 100644 --- a/test/old/testdir/test_quickfix.vim +++ b/test/old/testdir/test_quickfix.vim @@ -2696,7 +2696,6 @@ func Test_Autocmd() cgetbuffer enew! | call append(0, "F2:30:Line 30") caddbuffer - new let bnum = bufnr('%') bunload @@ -3976,7 +3975,6 @@ func Test_getqflist() call Xgetlist_empty_tests('l') endfunc - func Test_getqflist_invalid_nr() " The following commands used to crash Vim cexpr "" @@ -5333,234 +5331,6 @@ func Test_cquit() call assert_fails('-3cquit', 'E16:') endfunc -" Running :lhelpgrep command more than once in a help window, doesn't jump to -" the help topic -func Test_lhelpgrep_from_help_window() - call mkdir('Xtestdir/doc', 'p') - call writefile(['window'], 'Xtestdir/doc/a.txt') - call writefile(['buffer'], 'Xtestdir/doc/b.txt') - let save_rtp = &rtp - let &rtp = 'Xtestdir' - lhelpgrep window - lhelpgrep buffer - call assert_equal('b.txt', fnamemodify(@%, ":p:t")) - lhelpgrep window - call assert_equal('a.txt', fnamemodify(@%, ":p:t")) - let &rtp = save_rtp - call delete('Xtestdir', 'rf') - new | only! -endfunc - -" Test for the crash fixed by 7.3.715 -func Test_setloclist_crash() - %bw! - let g:BufNum = bufnr() - augroup QF_Test - au! - au BufUnload * call setloclist(0, [{'bufnr':g:BufNum, 'lnum':1, 'col':1, 'text': 'tango down'}]) - augroup END - - try - lvimgrep /.*/ *.mak - catch /E926:/ - endtry - call assert_equal('tango down', getloclist(0, {'items' : 0}).items[0].text) - call assert_equal(1, getloclist(0, {'size' : 0}).size) - - augroup QF_Test - au! - augroup END - unlet g:BufNum - %bw! -endfunc - -" Test for adding an invalid entry with the quickfix window open and making -" sure that the window contents are not changed -func Test_add_invalid_entry_with_qf_window() - call setqflist([], 'f') - cexpr "Xfile1:10:aa" - copen - call setqflist(['bb'], 'a') - call assert_equal(1, line('$')) - call assert_equal(['Xfile1|10| aa'], getline(1, '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10 col 666| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10 col 666| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10 col 666-222| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - - call setqflist([{'lnum': 10 , 'end_lnum': 6 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') - call assert_equal(1 , line('$')) - call assert_equal(['Xfile1|10-6 col 666-222| aa'] , getline(1 , '$')) - call assert_equal([{'lnum': 10 , 'end_lnum': 6 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) - cclose -endfunc - -" Test for very weird problem: autocommand causes a failure, resulting opening -" the quickfix window to fail. This still splits the window, but otherwise -" should not mess up buffers. -func Test_quickfix_window_fails_to_open() - CheckScreendump - - let lines =<< trim END - anything - try - anything - endtry - END - call writefile(lines, 'XquickfixFails') - - let lines =<< trim END - split XquickfixFails - silent vimgrep anything % - normal o - au BufLeave * ++once source XquickfixFails - " This will trigger the autocommand, which causes an error, what follows - " is aborted but the window was already split. - silent! cwindow - END - call writefile(lines, 'XtestWinFails') - let buf = RunVimInTerminal('-S XtestWinFails', #{rows: 13}) - call VerifyScreenDump(buf, 'Test_quickfix_window_fails', {}) - - " clean up - call term_sendkeys(buf, ":bwipe!\<CR>") - call term_wait(buf) - call StopVimInTerminal(buf) - call delete('XtestWinFails') - call delete('XquickfixFails') -endfunc - -" Test for updating the quickfix buffer whenever the associated quickfix list -" is changed. -func Xqfbuf_update(cchar) - call s:setup_commands(a:cchar) - - Xexpr "F1:1:line1" - Xopen - call assert_equal(['F1|1| line1'], getline(1, '$')) - call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) - - " Test setqflist() using the 'lines' key in 'what' - " add a new entry - call g:Xsetlist([], 'a', {'lines' : ['F2:2: line2']}) - call assert_equal(['F1|1| line1', 'F2|2| line2'], getline(1, '$')) - call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick) - " replace all the entries with a single entry - call g:Xsetlist([], 'r', {'lines' : ['F3:3: line3']}) - call assert_equal(['F3|3| line3'], getline(1, '$')) - call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick) - " remove all the entries - call g:Xsetlist([], 'r', {'lines' : []}) - call assert_equal([''], getline(1, '$')) - call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick) - " add a new list - call g:Xsetlist([], ' ', {'lines' : ['F4:4: line4']}) - call assert_equal(['F4|4| line4'], getline(1, '$')) - call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) - - " Test setqflist() using the 'items' key in 'what' - " add a new entry - call g:Xsetlist([], 'a', {'items' : [{'filename' : 'F5', 'lnum' : 5, 'text' : 'line5'}]}) - call assert_equal(['F4|4| line4', 'F5|5| line5'], getline(1, '$')) - call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick) - " replace all the entries with a single entry - call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F6', 'lnum' : 6, 'text' : 'line6'}]}) - call assert_equal(['F6|6| line6'], getline(1, '$')) - call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick) - " remove all the entries - call g:Xsetlist([], 'r', {'items' : []}) - call assert_equal([''], getline(1, '$')) - call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick) - " add a new list - call g:Xsetlist([], ' ', {'items' : [{'filename' : 'F7', 'lnum' : 7, 'text' : 'line7'}]}) - call assert_equal(['F7|7| line7'], getline(1, '$')) - call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) - - call g:Xsetlist([], ' ', {}) - call assert_equal([''], getline(1, '$')) - call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) - - Xclose -endfunc - -func Test_qfbuf_update() - call Xqfbuf_update('c') - call Xqfbuf_update('l') -endfunc - -" Test for the :vimgrep 'f' flag (fuzzy match) -func Xvimgrep_fuzzy_match(cchar) - call s:setup_commands(a:cchar) - - Xvimgrep /three one/f Xfile* - let l = g:Xgetlist() - call assert_equal(2, len(l)) - call assert_equal(['Xfile1', 1, 9, 'one two three'], - \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) - call assert_equal(['Xfile2', 2, 1, 'three one two'], - \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) - - Xvimgrep /the/f Xfile* - let l = g:Xgetlist() - call assert_equal(3, len(l)) - call assert_equal(['Xfile1', 1, 9, 'one two three'], - \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) - call assert_equal(['Xfile2', 2, 1, 'three one two'], - \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) - call assert_equal(['Xfile2', 4, 4, 'aaathreeaaa'], - \ [bufname(l[2].bufnr), l[2].lnum, l[2].col, l[2].text]) - - Xvimgrep /aaa/fg Xfile* - let l = g:Xgetlist() - call assert_equal(4, len(l)) - call assert_equal(['Xfile1', 2, 1, 'aaaaaa'], - \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) - call assert_equal(['Xfile1', 2, 4, 'aaaaaa'], - \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) - call assert_equal(['Xfile2', 4, 1, 'aaathreeaaa'], - \ [bufname(l[2].bufnr), l[2].lnum, l[2].col, l[2].text]) - call assert_equal(['Xfile2', 4, 9, 'aaathreeaaa'], - \ [bufname(l[3].bufnr), l[3].lnum, l[3].col, l[3].text]) - - call assert_fails('Xvimgrep /xyz/fg Xfile*', 'E480:') -endfunc - -func Test_vimgrep_fuzzy_match() - call writefile(['one two three', 'aaaaaa'], 'Xfile1') - call writefile(['one', 'three one two', 'two', 'aaathreeaaa'], 'Xfile2') - call Xvimgrep_fuzzy_match('c') - call Xvimgrep_fuzzy_match('l') - call delete('Xfile1') - call delete('Xfile2') -endfunc - " Test for getting a specific item from a quickfix list func Xtest_getqflist_by_idx(cchar) call s:setup_commands(a:cchar) @@ -5590,7 +5360,6 @@ func Tqfexpr(info) let qfl = getloclist(a:info.winid, {'id' : a:info.id, 'items' : 1}).items endif - let l = [] for idx in range(a:info.start_idx - 1, a:info.end_idx - 1) let e = qfl[idx] @@ -5975,6 +5744,234 @@ func Test_qftextfunc_other_loclist() %bw! endfunc +" Running :lhelpgrep command more than once in a help window, doesn't jump to +" the help topic +func Test_lhelpgrep_from_help_window() + call mkdir('Xtestdir/doc', 'p') + call writefile(['window'], 'Xtestdir/doc/a.txt') + call writefile(['buffer'], 'Xtestdir/doc/b.txt') + let save_rtp = &rtp + let &rtp = 'Xtestdir' + lhelpgrep window + lhelpgrep buffer + call assert_equal('b.txt', fnamemodify(@%, ":p:t")) + lhelpgrep window + call assert_equal('a.txt', fnamemodify(@%, ":p:t")) + let &rtp = save_rtp + call delete('Xtestdir', 'rf') + new | only! +endfunc + +" Test for the crash fixed by 7.3.715 +func Test_setloclist_crash() + %bw! + let g:BufNum = bufnr() + augroup QF_Test + au! + au BufUnload * call setloclist(0, [{'bufnr':g:BufNum, 'lnum':1, 'col':1, 'text': 'tango down'}]) + augroup END + + try + lvimgrep /.*/ *.mak + catch /E926:/ + endtry + call assert_equal('tango down', getloclist(0, {'items' : 0}).items[0].text) + call assert_equal(1, getloclist(0, {'size' : 0}).size) + + augroup QF_Test + au! + augroup END + unlet g:BufNum + %bw! +endfunc + +" Test for adding an invalid entry with the quickfix window open and making +" sure that the window contents are not changed +func Test_add_invalid_entry_with_qf_window() + call setqflist([], 'f') + cexpr "Xfile1:10:aa" + copen + call setqflist(['bb'], 'a') + call assert_equal(1, line('$')) + call assert_equal(['Xfile1|10| aa'], getline(1, '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': 0 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 0 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10 col 666| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 0 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10 col 666| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': -456 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10 col 666-222| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': -123 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + + call setqflist([{'lnum': 10 , 'end_lnum': 6 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , 'r') + call assert_equal(1 , line('$')) + call assert_equal(['Xfile1|10-6 col 666-222| aa'] , getline(1 , '$')) + call assert_equal([{'lnum': 10 , 'end_lnum': 6 , 'bufnr': bufnr('Xfile1') , 'col': 666 , 'end_col': 222 , 'pattern': '' , 'valid': 1 , 'vcol': 0 , 'nr': -1 , 'type': '' , 'module': '' , 'text': 'aa'}] , getqflist()) + cclose +endfunc + +" Test for very weird problem: autocommand causes a failure, resulting opening +" the quickfix window to fail. This still splits the window, but otherwise +" should not mess up buffers. +func Test_quickfix_window_fails_to_open() + CheckScreendump + + let lines =<< trim END + anything + try + anything + endtry + END + call writefile(lines, 'XquickfixFails') + + let lines =<< trim END + split XquickfixFails + silent vimgrep anything % + normal o + au BufLeave * ++once source XquickfixFails + " This will trigger the autocommand, which causes an error, what follows + " is aborted but the window was already split. + silent! cwindow + END + call writefile(lines, 'XtestWinFails') + let buf = RunVimInTerminal('-S XtestWinFails', #{rows: 13}) + call VerifyScreenDump(buf, 'Test_quickfix_window_fails', {}) + + " clean up + call term_sendkeys(buf, ":bwipe!\<CR>") + call term_wait(buf) + call StopVimInTerminal(buf) + call delete('XtestWinFails') + call delete('XquickfixFails') +endfunc + +" Test for updating the quickfix buffer whenever the associated quickfix list +" is changed. +func Xqfbuf_update(cchar) + call s:setup_commands(a:cchar) + + Xexpr "F1:1:line1" + Xopen + call assert_equal(['F1|1| line1'], getline(1, '$')) + call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) + + " Test setqflist() using the 'lines' key in 'what' + " add a new entry + call g:Xsetlist([], 'a', {'lines' : ['F2:2: line2']}) + call assert_equal(['F1|1| line1', 'F2|2| line2'], getline(1, '$')) + call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick) + " replace all the entries with a single entry + call g:Xsetlist([], 'r', {'lines' : ['F3:3: line3']}) + call assert_equal(['F3|3| line3'], getline(1, '$')) + call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick) + " remove all the entries + call g:Xsetlist([], 'r', {'lines' : []}) + call assert_equal([''], getline(1, '$')) + call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick) + " add a new list + call g:Xsetlist([], ' ', {'lines' : ['F4:4: line4']}) + call assert_equal(['F4|4| line4'], getline(1, '$')) + call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) + + " Test setqflist() using the 'items' key in 'what' + " add a new entry + call g:Xsetlist([], 'a', {'items' : [{'filename' : 'F5', 'lnum' : 5, 'text' : 'line5'}]}) + call assert_equal(['F4|4| line4', 'F5|5| line5'], getline(1, '$')) + call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick) + " replace all the entries with a single entry + call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F6', 'lnum' : 6, 'text' : 'line6'}]}) + call assert_equal(['F6|6| line6'], getline(1, '$')) + call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick) + " remove all the entries + call g:Xsetlist([], 'r', {'items' : []}) + call assert_equal([''], getline(1, '$')) + call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick) + " add a new list + call g:Xsetlist([], ' ', {'items' : [{'filename' : 'F7', 'lnum' : 7, 'text' : 'line7'}]}) + call assert_equal(['F7|7| line7'], getline(1, '$')) + call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) + + call g:Xsetlist([], ' ', {}) + call assert_equal([''], getline(1, '$')) + call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick) + + Xclose +endfunc + +func Test_qfbuf_update() + call Xqfbuf_update('c') + call Xqfbuf_update('l') +endfunc + +" Test for the :vimgrep 'f' flag (fuzzy match) +func Xvimgrep_fuzzy_match(cchar) + call s:setup_commands(a:cchar) + + Xvimgrep /three one/f Xfile* + let l = g:Xgetlist() + call assert_equal(2, len(l)) + call assert_equal(['Xfile1', 1, 9, 'one two three'], + \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) + call assert_equal(['Xfile2', 2, 1, 'three one two'], + \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) + + Xvimgrep /the/f Xfile* + let l = g:Xgetlist() + call assert_equal(3, len(l)) + call assert_equal(['Xfile1', 1, 9, 'one two three'], + \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) + call assert_equal(['Xfile2', 2, 1, 'three one two'], + \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) + call assert_equal(['Xfile2', 4, 4, 'aaathreeaaa'], + \ [bufname(l[2].bufnr), l[2].lnum, l[2].col, l[2].text]) + + Xvimgrep /aaa/fg Xfile* + let l = g:Xgetlist() + call assert_equal(4, len(l)) + call assert_equal(['Xfile1', 2, 1, 'aaaaaa'], + \ [bufname(l[0].bufnr), l[0].lnum, l[0].col, l[0].text]) + call assert_equal(['Xfile1', 2, 4, 'aaaaaa'], + \ [bufname(l[1].bufnr), l[1].lnum, l[1].col, l[1].text]) + call assert_equal(['Xfile2', 4, 1, 'aaathreeaaa'], + \ [bufname(l[2].bufnr), l[2].lnum, l[2].col, l[2].text]) + call assert_equal(['Xfile2', 4, 9, 'aaathreeaaa'], + \ [bufname(l[3].bufnr), l[3].lnum, l[3].col, l[3].text]) + + call assert_fails('Xvimgrep /xyz/fg Xfile*', 'E480:') +endfunc + +func Test_vimgrep_fuzzy_match() + call writefile(['one two three', 'aaaaaa'], 'Xfile1') + call writefile(['one', 'three one two', 'two', 'aaathreeaaa'], 'Xfile2') + call Xvimgrep_fuzzy_match('c') + call Xvimgrep_fuzzy_match('l') + call delete('Xfile1') + call delete('Xfile2') +endfunc + func Test_locationlist_open_in_newtab() call s:create_test_file('Xqftestfile1') call s:create_test_file('Xqftestfile2') |