Mercurial > vim
diff src/testdir/test_search.vim @ 12763:7f27e9769f62 v8.0.1259
patch 8.0.1259: search test can be flaky
commit https://github.com/vim/vim/commit/13deab8d08145c1f6e2a3e82cb547bc7f87a3686
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 4 18:48:43 2017 +0100
patch 8.0.1259: search test can be flaky
Problem: Search test can be flaky.
Solution: Use WaitFor() instead of a delay. Make it possible to pass a
funcref to WaitFor() to avoid the need for global variables.
(James McCoy, closes #2282)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 04 Nov 2017 19:00:05 +0100 |
parents | 528b227051f8 |
children | cb9b2774f21f |
line wrap: on
line diff
--- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -482,19 +482,17 @@ func Test_search_cmdline8() " Prepare buffer text let lines = ['abb vim vim vi', 'vimvivim'] call writefile(lines, 'Xsearch.txt') - let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) + let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) - call term_wait(g:buf, 200) - call assert_equal(lines[0], term_getline(g:buf, 1)) - call assert_equal(lines[1], term_getline(g:buf, 2)) + call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] }) - call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>") - call term_sendkeys(g:buf, ":14vsp\<cr>") - call term_sendkeys(g:buf, "/vim\<cr>") - call term_sendkeys(g:buf, "/b\<esc>") - call term_sendkeys(g:buf, "gg0") - call term_wait(g:buf, 500) - let screen_line = term_scrape(g:buf, 1) + call term_sendkeys(buf, ":set incsearch hlsearch\<cr>") + call term_sendkeys(buf, ":14vsp\<cr>") + call term_sendkeys(buf, "/vim\<cr>") + call term_sendkeys(buf, "/b\<esc>") + call term_sendkeys(buf, "gg0") + call term_wait(buf, 500) + let screen_line = term_scrape(buf, 1) let [a0,a1,a2,a3] = [screen_line[3].attr, screen_line[4].attr, \ screen_line[18].attr, screen_line[19].attr] call assert_notequal(a0, a1) @@ -607,19 +605,17 @@ func Test_search_cmdline_incsearch_highl endif " Prepare buffer text - let g:lines = ['abb vim vim vi', 'vimvivim'] - call writefile(g:lines, 'Xsearch.txt') - let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) - call WaitFor('g:lines[0] == term_getline(g:buf, 1)') - call assert_equal(g:lines[0], term_getline(g:buf, 1)) - call assert_equal(g:lines[1], term_getline(g:buf, 2)) - unlet g:lines + let lines = ['abb vim vim vi', 'vimvivim'] + call writefile(lines, 'Xsearch.txt') + let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) + + call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] }) " Get attr of normal(a0), incsearch(a1), hlsearch(a2) highlight - call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>") - call term_sendkeys(g:buf, '/b') - call term_wait(g:buf, 200) - let screen_line1 = term_scrape(g:buf, 1) + call term_sendkeys(buf, ":set incsearch hlsearch\<cr>") + call term_sendkeys(buf, '/b') + call term_wait(buf, 200) + let screen_line1 = term_scrape(buf, 1) call assert_true(len(screen_line1) > 2) " a0: attr_normal let a0 = screen_line1[0].attr @@ -630,53 +626,53 @@ func Test_search_cmdline_incsearch_highl call assert_notequal(a0, a1) call assert_notequal(a0, a2) call assert_notequal(a1, a2) - call term_sendkeys(g:buf, "\<cr>gg0") + call term_sendkeys(buf, "\<cr>gg0") " Test incremental highlight search - call term_sendkeys(g:buf, "/vim") - call term_wait(g:buf, 200) + call term_sendkeys(buf, "/vim") + call term_wait(buf, 200) " Buffer: " abb vim vim vi " vimvivim " Search: /vim let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a2,a2,a2,a0,a0,a0] let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] - call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) - call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) + call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr')) + call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr')) " Test <C-g> - call term_sendkeys(g:buf, "\<C-g>\<C-g>") - call term_wait(g:buf, 200) + call term_sendkeys(buf, "\<C-g>\<C-g>") + call term_wait(buf, 200) let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0] let attr_line2 = [a1,a1,a1,a0,a0,a2,a2,a2] - call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) - call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) + call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr')) + call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr')) " Test <C-t> - call term_sendkeys(g:buf, "\<C-t>") - call term_wait(g:buf, 200) + call term_sendkeys(buf, "\<C-t>") + call term_wait(buf, 200) let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a1,a1,a1,a0,a0,a0] let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] - call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) - call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) + call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr')) + call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr')) " Type Enter and a1(incsearch highlight) should become a2(hlsearch highlight) - call term_sendkeys(g:buf, "\<cr>") - call term_wait(g:buf, 200) + call term_sendkeys(buf, "\<cr>") + call term_wait(buf, 200) let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0] let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] - call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) - call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) + call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr')) + call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr')) " Test nohlsearch. a2(hlsearch highlight) should become a0(normal highlight) - call term_sendkeys(g:buf, ":1\<cr>") - call term_sendkeys(g:buf, ":set nohlsearch\<cr>") - call term_sendkeys(g:buf, "/vim") - call term_wait(g:buf, 200) + call term_sendkeys(buf, ":1\<cr>") + call term_sendkeys(buf, ":set nohlsearch\<cr>") + call term_sendkeys(buf, "/vim") + call term_wait(buf, 200) let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a0,a0,a0,a0,a0,a0] let attr_line2 = [a0,a0,a0,a0,a0,a0,a0,a0] - call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) - call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) + call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr')) + call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr')) call delete('Xsearch.txt') call delete('Xsearch.txt')