Problem: Tests using term_wait() can still be flaky.
Solution: Increase the wait time when rerunning a test. (James McCoy,
closes #5899) Halve the initial times to make tests run faster
when there is no rerun.
call WaitFor({-> job_status(job) == "dead"})
endfunc
+" Wrapper around term_wait() to allow more time for re-runs of flaky tests
+" The second argument is the minimum time to wait in msec, 10 if omitted.
+func TermWait(buf, ...)
+ let wait_time = a:0 ? a:1 : 10
+ if g:run_nr == 2
+ let wait_time *= 4
+ elseif g:run_nr > 2
+ let wait_time *= 10
+ endif
+ call term_wait(a:buf, wait_time)
+
+ " In case it wasn't set yet.
+ let g:test_is_flaky = 1
+endfunc
+
" Run Vim with "arguments" in a new terminal window.
" By default uses a size of 20 lines and 75 columns.
" Returns the buffer number of the terminal.
let cols = term_getsize(buf)[1]
endif
- call term_wait(buf)
+ call TermWait(buf)
" Wait for "All" or "Top" of the ruler to be shown in the last line or in
" the status line of the last window. This can be quite slow (e.g. when
call term_sendkeys(buf, ":set nomore\n")
call term_sendkeys(buf, ":args a b c\n")
call term_sendkeys(buf, ":quit\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))})
call StopVimInTerminal(buf)
call term_sendkeys(buf, ":set nomore\n")
call term_sendkeys(buf, ":args a b c\n")
call term_sendkeys(buf, ":confirm quit\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$',
\ term_getline(buf, 6))})
call term_sendkeys(buf, "N")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, ":confirm quit\n")
call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$',
\ term_getline(buf, 6))})
call term_sendkeys(buf, "Y")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_equal("finished", term_getstatus(buf))})
only!
" When this test fails, swap files are left behind which breaks subsequent
augroup END
let s:li = []
let s:dir_this = getcwd()
- let s:dir_foo = s:dir_this . '/foo'
+ let s:dir_foo = s:dir_this . '/Xfoo'
call mkdir(s:dir_foo)
- let s:dir_bar = s:dir_this . '/bar'
+ let s:dir_bar = s:dir_this . '/Xbar'
call mkdir(s:dir_bar)
endfunc
call WaitForAssert({-> assert_match('^xxx', term_getline(buf, 6))}, 1000)
call term_sendkeys(buf, ":let g:again = ''\<CR>:call CallTimer()\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":echo g:again\<CR>")
call WaitForAssert({-> assert_match('xtx', term_getline(buf, 6))}, 1000)
let buf = RunVimInTerminal('-S '.filename, #{rows: 6})
call term_sendkeys(buf, "q:")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, ":echo b:dummy_var\<cr>")
call WaitForAssert({-> assert_match('^This is a dummy', term_getline(buf, 6))}, 2000)
call term_sendkeys(buf, ":echo &buftype\<cr>")
" Check that the balloon shows up after a mouse move
let buf = RunVimInTerminal('-S XTest_beval', {'rows': 10, 'cols': 50})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, 'll')
call term_sendkeys(buf, ":call Trigger()\<CR>")
call VerifyScreenDump(buf, 'Test_balloon_eval_term_01', {})
" Make sure the balloon still shows after 'updatetime' passed and CursorHold
" was triggered.
- call term_wait(buf, 300)
+ call TermWait(buf, 150)
call VerifyScreenDump(buf, 'Test_balloon_eval_term_01a', {})
" clean up
" Check that the balloon shows up after a mouse move
let buf = RunVimInTerminal('-S XTest_beval_visual', {'rows': 10, 'cols': 50})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call VerifyScreenDump(buf, 'Test_balloon_eval_term_02', {})
" clean up
END
call writefile(lines, 'XscriptMatchCommon')
let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 10})
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_appendbufline_1', {})
call StopVimInTerminal(buf)
END
call writefile(lines, 'XtestBufferScroll')
let buf = RunVimInTerminal('-S XtestBufferScroll', #{rows: 10})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call VerifyScreenDump(buf, 'Test_job_buffer_scroll_1', {})
" clean up
call writefile(lines, 'XTest_verbose')
let buf = RunVimInTerminal('-S XTest_verbose', {'rows': 12})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":DoSomething\<CR>")
call VerifyScreenDump(buf, 'Test_verbose_option_1', {})
call writefile(lines, 'XTest_restore')
let buf = RunVimInTerminal('-S XTest_restore', {'rows': 12})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "q:")
call VerifyScreenDump(buf, 'Test_cmdwin_restore_1', {})
call writefile(lines, 'XtestCmdlineClearTabenter')
let buf = RunVimInTerminal('-S XtestCmdlineClearTabenter', #{rows: 10})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
" in one tab make the command line higher with CTRL-W -
call term_sendkeys(buf, ":tabnew\<cr>\<C-w>-\<C-w>-gtgt")
call VerifyScreenDump(buf, 'Test_cmdlineclear_tabenter', {})
call VerifyScreenDump(buf, 'Test_conceal_resize_01', {})
call win_execute(buf->win_findbuf()[0], 'wincmd +')
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_conceal_resize_02', {})
" clean up
call writefile(lines, filename)
" basic test
let buf = RunVimInTerminal('-S '. filename, #{rows: 20})
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_1', {})
call term_sendkeys(buf, "fagj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_2', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_3', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_4', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_5', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_6', {})
" test with set list and cursorlineopt containing number
call term_sendkeys(buf, "gg0")
call term_sendkeys(buf, ":set list cursorlineopt+=number listchars=space:-\<cr>")
call VerifyScreenDump(buf, 'Test_'. filename. '_7', {})
call term_sendkeys(buf, "fagj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_8', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_9', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_10', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_11', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_12', {})
if exists("+foldcolumn") && exists("+signcolumn") && exists("+breakindent")
" test with set foldcolumn signcoloumn and breakindent
call term_sendkeys(buf, ":set breakindent foldcolumn=2 signcolumn=yes\<cr>")
call VerifyScreenDump(buf, 'Test_'. filename. '_13', {})
call term_sendkeys(buf, "fagj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_14', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_15', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_16', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_17', {})
call term_sendkeys(buf, "gj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_18', {})
endif
" If the expected output argument is supplied, then check for it.
func RunDbgCmd(buf, cmd, ...)
call term_sendkeys(a:buf, a:cmd . "\r")
- call term_wait(a:buf, 20)
+ call TermWait(a:buf)
if a:0 != 0
" Verify the expected output
call term_sendkeys(a:buf, ":diffupdate!\<CR>")
" trailing : for leaving the cursor on the command line
call term_sendkeys(a:buf, ":set diffopt=internal,filler" . a:extra . "\<CR>:")
- call term_wait(a:buf)
+ call TermWait(a:buf)
call VerifyScreenDump(a:buf, a:dumpfile, {})
endfunc
call writefile(lines, filename)
let buf = RunVimInTerminal('-S '.filename, #{rows: 5, cols: 50})
call term_sendkeys(buf, "k")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_winline_rnu', {})
" clean up
func Test_state()
CheckRunVimInTerminal
- " In the first run try a short wait time. If the test fails retry with a
- " longer wait time.
- if g:run_nr == 1
- let wait_time = 50
- elseif g:run_nr == 2
- let wait_time = 200
- else
- let wait_time = 500
- endif
let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\<CR>"
let lines =<< trim END
" Using a timer callback
call term_sendkeys(buf, ":call RunTimer()\<CR>")
- call term_wait(buf, wait_time)
+ call TermWait(buf, 25)
call term_sendkeys(buf, getstate)
call WaitForAssert({-> assert_match('state: c; mode: n', term_getline(buf, 6))}, 1000)
" Halfway a mapping
call term_sendkeys(buf, ":call RunTimer()\<CR>;")
- call term_wait(buf, wait_time)
+ call TermWait(buf, 25)
call term_sendkeys(buf, ";")
call term_sendkeys(buf, getstate)
call WaitForAssert({-> assert_match('state: mSc; mode: n', term_getline(buf, 6))}, 1000)
" Insert mode completion (bit slower on Mac)
call term_sendkeys(buf, ":call RunTimer()\<CR>Got\<C-N>")
- call term_wait(buf, wait_time)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "\<Esc>")
call term_sendkeys(buf, getstate)
call WaitForAssert({-> assert_match('state: aSc; mode: i', term_getline(buf, 6))}, 1000)
" Autocommand executing
call term_sendkeys(buf, ":set filetype=foobar\<CR>")
- call term_wait(buf, wait_time)
+ call TermWait(buf, 25)
call term_sendkeys(buf, getstate)
call WaitForAssert({-> assert_match('state: xS; mode: n', term_getline(buf, 6))}, 1000)
" messages scrolled
call term_sendkeys(buf, ":call RunTimer()\<CR>:echo \"one\\ntwo\\nthree\"\<CR>")
- call term_wait(buf, wait_time)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "\<CR>")
call term_sendkeys(buf, getstate)
call WaitForAssert({-> assert_match('state: Scs; mode: r', term_getline(buf, 6))}, 1000)
\ 'call setline(1, ["","1","2","3",""])',
\ ], 'Xtest_cursorline_yank')
let buf = RunVimInTerminal('-S Xtest_cursorline_yank', {'rows': 8})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "Gy3k")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "jj")
call VerifyScreenDump(buf, 'Test_cursorline_yank_01', {})
\ 'call setline(1, repeat(["abc"], 50))',
\ ], 'Xtest_cursorline_with_visualmode')
let buf = RunVimInTerminal('-S Xtest_cursorline_with_visualmode', {'rows': 12})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "V\<C-f>kkkjk")
call VerifyScreenDump(buf, 'Test_cursorline_with_visualmode_01', {})
END
call writefile(lines, 'Xtest_wincolor')
let buf = RunVimInTerminal('-S Xtest_wincolor', {'rows': 8})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "2G5lvj")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_wincolor_01', {})
call writefile(lines, 'Xtest_colorcolumn')
let buf = RunVimInTerminal('-S Xtest_colorcolumn', {'rows': 10})
call term_sendkeys(buf, ":\<CR>")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_colorcolumn_1', {})
" clean up
call writefile(lines, 'Xpumscript')
let buf = RunVimInTerminal('-S Xpumscript', #{rows: 10})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "a\<C-N>")
call VerifyScreenDump(buf, 'Test_pum_with_folds_two_tabs', {})
call writefile(lines, 'Xpreviewscript')
let buf = RunVimInTerminal('-S Xpreviewscript', #{rows: 12})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "Gi\<C-X>\<C-O>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, "\<C-N>")
call VerifyScreenDump(buf, 'Test_pum_with_preview_win', {})
" GC must not run during map-expr processing, which can make Vim crash.
call term_sendkeys(buf, '!')
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call assert_equal('run', job_status(job))
call term_sendkeys(buf, ":qall!\<CR>")
END
call writefile(lines, 'XtestExprMap')
let buf = RunVimInTerminal('-S XtestExprMap', #{rows: 10})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "\<C-B>")
call VerifyScreenDump(buf, 'Test_map_expr_1', {})
END
call writefile(lines, 'XscriptMatchCommon')
let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 12})
- call term_wait(buf)
+ call TermWait(buf)
return buf
endfunc
END
call writefile(lines, 'Xcolesearch')
let buf = RunVimInTerminal('Xcolesearch', {})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
" Jump to something that is beyond the bottom of the window,
" so there's a scroll down.
call term_sendkeys(buf, ":so %\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "/expr\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
" Are the concealed parts of the current line really hidden?
let cursor_row = term_scrape(buf, '.')->map({_, e -> e.chars})->join('')
" Horizontal scroll would center the cursor in the screen line, but conceal
" makes it go to screen column 1.
call term_sendkeys(buf, "$")
- call term_wait(buf)
+ call TermWait(buf)
" Are the concealed parts of the current line really hidden?
call WaitForAssert({-> assert_equal('c', term_getline(buf, '.'))})
let rows = 10
let buf = term_start([GetVimProg(), '--clean', '-S', testfile], {'term_rows': rows})
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call assert_equal('run', job_status(term_getjob(buf)))
call term_sendkeys(buf, "i")
let rows = 10
let buf = term_start([GetVimProg(), '--clean', '-S', testfile], {'term_rows': rows})
- call term_wait(buf, 200)
+ call WaitForAssert({-> assert_match('0,0-1\s*All$', term_getline(buf, rows - 1))})
call assert_equal('run', job_status(term_getjob(buf)))
call term_sendkeys(buf, "i")
" Check that the balloon shows up after a mouse move
let buf = RunVimInTerminal('-S XTest_relnr', {'rows': 10, 'cols': 50})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
" Default colors
call VerifyScreenDump(buf, 'Test_relnr_colors_1', {})
call term_sendkeys(buf, "Gi\<c-x>")
call term_sendkeys(buf, "\<c-v>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
" popup first entry "!" must be at the top
call WaitForAssert({-> assert_match('^!\s*$', term_getline(buf, 1))})
exe 'resize +' . (h - 1)
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
redraw!
" popup shifted down, first line is now empty
call WaitForAssert({-> assert_equal('', term_getline(buf, 1))})
let buf = RunVimInTerminal('-S Xscript', {})
" wait for the script to finish
- call term_wait(buf)
+ call TermWait(buf)
" Test that popup and previewwindow do not overlap.
call term_sendkeys(buf, "o")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "\<C-X>\<C-N>")
call VerifyScreenDump(buf, 'Test_popup_and_previewwindow_01', {})
" clear all popups after moving the cursor a bit, so that ruler is updated
call term_sendkeys(buf, "axxx\<Esc>")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "0")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, ":call popup_clear()\<CR>")
call VerifyScreenDump(buf, 'Test_popupwin_08', {})
END
call writefile(lines, 'XtestPopupBeval')
let buf = RunVimInTerminal('-S XtestPopupBeval', #{rows: 10})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, 'j')
call term_sendkeys(buf, ":call Hover()\<CR>")
call VerifyScreenDump(buf, 'Test_popupwin_beval_1', {})
call writefile(lines, 'XtestInfoPopup')
let buf = RunVimInTerminal('-S XtestInfoPopup', #{rows: 14})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "A\<C-X>\<C-U>")
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_1', {})
call writefile(lines, 'XtestInfoPopupNb')
let buf = RunVimInTerminal('-S XtestInfoPopupNb', #{rows: 14})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "A\<C-X>\<C-U>")
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_nb_1', {})
call writefile(lines, 'XtestInfoPopupNb')
let buf = RunVimInTerminal('-S XtestInfoPopupNb', #{rows: 14})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "A\<C-X>\<C-U>")
call term_sendkeys(buf, "\<C-N>")
call writefile(lines, 'XtestInfoPopupHidden')
let buf = RunVimInTerminal('-S XtestInfoPopupHidden', #{rows: 14})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "A\<C-X>\<C-U>")
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_hidden_1', {})
call writefile(lines, 'XtestInfoPopupWide')
let buf = RunVimInTerminal('-S XtestInfoPopupWide', #{rows: 8})
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call term_sendkeys(buf, "Ascr\<C-X>\<C-O>")
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_wide_1', {})
\ .. "endfunc\<CR>")
call term_sendkeys(buf, ":profile func DoSomething\<CR>")
call term_sendkeys(buf, ":call DoSomething()\<CR>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call StopVimInTerminal(buf)
let lines = readfile('XprofileTypedFunc')
call assert_equal("FUNCTION DoSomething()", lines[0])
call term_sendkeys(buf, "/vim\<cr>")
call term_sendkeys(buf, "/b\<esc>")
call term_sendkeys(buf, "gg0")
- call term_wait(buf, 500)
+ call TermWait(buf, 250)
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 WaitForAssert({-> assert_equal(lines, [term_getline(buf, 1), term_getline(buf, 2)])})
" wait for vim to complete initialization
- call term_wait(buf)
+ call TermWait(buf)
" Get attr of normal(a0), incsearch(a1), hlsearch(a2) highlight
call term_sendkeys(buf, ":set incsearch hlsearch\<cr>")
call term_sendkeys(buf, '/b')
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
let screen_line1 = term_scrape(buf, 1)
call assert_true(len(screen_line1) > 2)
" a0: attr_normal
" Test incremental highlight search
call term_sendkeys(buf, "/vim")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
" Buffer:
" abb vim vim vi
" vimvivim
" Test <C-g>
call term_sendkeys(buf, "\<C-g>\<C-g>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
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(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
" Test <C-t>
call term_sendkeys(buf, "\<C-t>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
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(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
" Type Enter and a1(incsearch highlight) should become a2(hlsearch highlight)
call term_sendkeys(buf, "\<cr>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
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(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
call term_sendkeys(buf, ":1\<cr>")
call term_sendkeys(buf, ":set nohlsearch\<cr>")
call term_sendkeys(buf, "/vim")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
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(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
END
call writefile(lines, 'Xsearchstat')
let buf = RunVimInTerminal('-S Xsearchstat', #{rows: 10})
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_searchstat_1', {})
call term_sendkeys(buf, ":nnoremap <silent> n n\<cr>")
call term_sendkeys(buf, "gg0n")
- call term_wait(buf)
+ call TermWait(buf)
call VerifyScreenDump(buf, 'Test_searchstat_2', {})
call StopVimInTerminal(buf)
let cmd = GetVimCommandCleanTerm() . ' -u Xvimrc_missing -S Xafter'
let buf = term_start(cmd, {'term_rows' : 10})
call WaitForAssert({-> assert_equal("running", term_getstatus(buf))})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "\n:")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match(':', term_getline(buf, 10))})
call StopVimInTerminal(buf)
call assert_equal([], readfile('Xtestout'))
\ 'redraw',
\ ], 'Xscript')
let buf = RunVimInTerminal('-S Xscript', {})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "S\<C-R>=&ambiwidth\<CR>\<Esc>")
call WaitForAssert({-> assert_match('single', term_getline(buf, 1))})
call writefile(lines, 'XTest_statusline')
let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 10, 'cols': 50})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call VerifyScreenDump(buf, 'Test_statusline_1', {})
" clean up
" Quit gracefully to dump coverage information.
call term_sendkeys(buf, ":qall!\<CR>")
- call term_wait(buf)
+ call TermWait(buf)
" Wait until Vim actually exited and shell shows a prompt
call WaitForAssert({-> assert_match('[$#] $', term_getline(buf, '.'))})
call StopShellInTerminal(buf)
call term_sendkeys(buf, ":set nomore\n")
call term_sendkeys(buf, ":set noruler\n")
call term_sendkeys(buf, ":split Xfile1\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^\[O\]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: $', term_getline(buf, 20))})
call term_sendkeys(buf, "q")
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, ":\<CR>")
call WaitForAssert({-> assert_match('^:$', term_getline(buf, 20))})
call term_sendkeys(buf, ":echomsg winnr('$')\<CR>")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^1$', term_getline(buf, 20))})
call StopVimInTerminal(buf)
%bwipe!
call writefile(lines, 'XTest_tselect')
let buf = RunVimInTerminal('-S XTest_tselect', {'rows': 10, 'cols': 50})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":tselect main\<CR>2\<CR>")
call VerifyScreenDump(buf, 'Test_tselect_1', {})
call assert_notmatch('%[^\n]*running]', execute('ls ?'))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
call assert_equal('n', mode())
call assert_match('%aF[^\n]*finished]', execute('ls'))
call assert_match('%aF[^\n]*finished]', execute('ls F'))
func Test_terminal_make_change()
let buf = Run_shell_in_terminal({})
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
setlocal modifiable
exe "normal Axxx\<Esc>"
func Test_terminal_split_quit()
let buf = Run_shell_in_terminal({})
- call term_wait(buf)
+ call TermWait(buf)
split
quit!
- call term_wait(buf)
+ call TermWait(buf)
sleep 50m
call assert_equal('run', job_status(g:job))
" Nothing happens with invalid buffer number
call term_wait(1234)
- call term_wait(buf)
+ call TermWait(buf)
" On MS-Windows we first get a startup message of two lines, wait for the
" "cls" to happen, after that we have one line with three characters.
call WaitForAssert({-> assert_equal(3, len(term_scrape(buf, 1)))})
" Must still work after the job ended.
let job = term_getjob(buf)
call WaitForAssert({-> assert_equal("dead", job_status(job))})
- call term_wait(buf)
+ call TermWait(buf)
call Check_123(buf)
exe buf . 'bwipe'
let job = term_getjob(buf)
call WaitForAssert({-> assert_equal("dead", job_status(job))})
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
call delete('Xtext')
let job = term_getjob(buf)
call WaitForAssert({-> assert_equal("dead", job_status(job))})
- call term_wait(buf)
+ call TermWait(buf)
" wait until the scrolling stops
while 1
call assert_inrange(91, 100, lines)
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinscroll&
call delete('Xtext')
" stop "tail -f"
call term_sendkeys(buf, "\<C-C>")
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
" stop shell
call term_sendkeys(buf, "exit\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
" close terminal window
let tsk_ret = term_sendkeys(buf, ":q\<CR>")
else
call term_sendkeys(buf, "echo $" . a:name . "\r")
endif
- call term_wait(buf)
+ call TermWait(buf)
call StopShellInTerminal(buf)
call WaitForAssert({-> assert_equal(a:value, getline(2))})
else
call term_sendkeys(buf, "echo $TESTENV\r")
endif
- eval buf->term_wait()
+ eval buf->TermWait()
call StopShellInTerminal(buf)
call WaitForAssert({-> assert_equal('correct', getline(2))})
let g:job = term_getjob(buf)
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
unlet g:job
bwipe
endfunc
func Test_terminal_redir_file()
let cmd = Get_cat_123_cmd()
let buf = term_start(cmd, {'out_io': 'file', 'out_name': 'Xfile'})
- call term_wait(buf)
+ call TermWait(buf)
" ConPTY may precede escape sequence. There are things that are not so.
if !has('conpty')
call WaitForAssert({-> assert_notequal(0, len(readfile("Xfile")))})
if has('unix')
call writefile(['one line'], 'Xfile')
let buf = term_start('cat', {'in_io': 'file', 'in_name': 'Xfile'})
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_equal('one line', term_getline(buf, 1))})
let g:job = term_getjob(buf)
call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
call term_sendkeys(buf, "\r")
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
tunmap 123
tunmap 456
let buf = Run_shell_in_terminal({})
wall
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
unlet g:job
endfunc
let buf = Run_shell_in_terminal({})
call assert_fails('wqall', 'E948')
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
unlet g:job
endfunc
enew
let buf = term_start(cmd, {'curwin': bufnr('')})
let g:job = term_getjob(buf)
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
if has('win32')
call assert_equal('cmd', job_info(g:job).cmd[0])
" ascii + composing
let txt = "a\u0308bc"
call term_sendkeys(buf, "echo " . txt . "\r")
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call assert_match("echo " . txt, term_getline(buf, lnum[0]))
call assert_equal(txt, term_getline(buf, lnum[0] + 1))
let l = term_scrape(buf, lnum[0] + 1)
" multibyte + composing
let txt = "\u304b\u3099\u304e\u304f\u3099\u3052\u3053\u3099"
call term_sendkeys(buf, "echo " . txt . "\r")
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call assert_match("echo " . txt, term_getline(buf, lnum[1]))
call assert_equal(txt, term_getline(buf, lnum[1] + 1))
let l = term_scrape(buf, lnum[1] + 1)
" \u00a0 + composing
let txt = "abc\u00a0\u0308"
call term_sendkeys(buf, "echo " . txt . "\r")
- call term_wait(buf, 50)
+ call TermWait(buf, 25)
call assert_match("echo " . txt, term_getline(buf, lnum[2]))
call assert_equal(txt, term_getline(buf, lnum[2] + 1))
let l = term_scrape(buf, lnum[2] + 1)
let buf = Run_shell_in_terminal({})
call assert_equal(colors, term_getansicolors(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
endfunc
let buf = Run_shell_in_terminal({})
call assert_equal(g:terminal_ansi_colors, term_getansicolors(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
unlet g:terminal_ansi_colors
call assert_fails('call term_setansicolors(buf, colors)', 'E474:')
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
endfunc
let win = bufwinid(buf)
call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinsize=7x0
let win = bufwinid(buf)
call assert_equal([7, winwidth(win)], term_getsize(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinsize=0x33
let win = bufwinid(buf)
call assert_equal([winheight(win), 33], term_getsize(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinsize=
call assert_equal(30, winwidth(win))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinsize=0*0
let win = bufwinid(buf)
call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
set termwinsize=
call assert_equal(1, winnr('$'))
let buf = Run_shell_in_terminal({'term_finish': 'close'})
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
" closing window wipes out the terminal buffer a with finished job
call WaitForAssert({-> assert_equal(1, winnr('$'))})
END
call writefile(lines, 'XtermNormal')
let buf = RunVimInTerminal('-S XtermNormal', {'rows': 8})
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, "\<C-W>N")
call term_sendkeys(buf, ":set number cursorline culopt=both\r")
call assert_equal('', term_gettty(buf + 1))
call StopShellInTerminal(buf)
- call term_wait(buf)
+ call TermWait(buf)
exe buf . 'bwipe'
endfunc
\ 'echo getwinpos()',
\ ], 'XTest_getwinpos')
let buf = RunVimInTerminal('-S XTest_getwinpos', {'cols': 60})
- call term_wait(buf)
+ call TermWait(buf)
" Find the output of getwinpos() in the bottom line.
let rows = term_getsize(buf)[0]
call assert_inrange(xroot + 2, xroot + xoff, xpos)
call assert_inrange(yroot + 2, yroot + yoff, ypos)
- call term_wait(buf)
+ call TermWait(buf)
call term_sendkeys(buf, ":q\<CR>")
call StopVimInTerminal(buf)
call delete('XTest_getwinpos')
\ ]
call writefile(lines, 'XtermPopup')
let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, ":call OpenTerm(0)\<CR>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, ":\<CR>")
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, "\<C-W>:echo getwinvar(g:winid, \"&buftype\") win_gettype(g:winid)\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_1', {})
call VerifyScreenDump(buf, 'Test_terminal_popup_2', {})
call term_sendkeys(buf, ":call OpenTerm(1)\<CR>")
- call term_wait(buf, 300)
+ call TermWait(buf, 150)
call term_sendkeys(buf, ":set hlsearch\<CR>")
call term_sendkeys(buf, "/edit\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_3', {})
call term_sendkeys(buf, "\<C-W>:call HidePopup()\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_4', {})
call term_sendkeys(buf, "\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "\<C-W>:call ClosePopup()\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_5', {})
call term_sendkeys(buf, "A")
call VerifyScreenDump(buf, 'Test_terminal_popup_8', {})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":q\<CR>")
- call term_wait(buf, 200) " wait for terminal to vanish
+ call TermWait(buf, 100) " wait for terminal to vanish
call StopVimInTerminal(buf)
call delete('Xtext')
\ ]
call writefile(lines, 'XtermPopup')
let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, ":set noruler\<CR>")
call term_sendkeys(buf, ":call OpenTerm()\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_m1', {})
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":q\<CR>")
- call term_wait(buf, 100) " wait for terminal to vanish
+ call TermWait(buf, 50) " wait for terminal to vanish
call StopVimInTerminal(buf)
call delete('Xtext')
call delete('XtermPopup')
\ ]
call writefile(lines, 'XtermPopup')
let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
- call term_wait(buf, 200)
+ call TermWait(buf, 100)
call term_sendkeys(buf, ":set noruler\<CR>")
call term_sendkeys(buf, ":call OpenTerm()\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "hello\<CR>")
call VerifyScreenDump(buf, 'Test_terminal_popup_' .. a:group_name, {})
call term_sendkeys(buf, "\<C-D>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, ":q\<CR>")
- call term_wait(buf, 100) " wait for terminal to vanish
+ call TermWait(buf, 50) " wait for terminal to vanish
call StopVimInTerminal(buf)
call delete('XtermPopup')
endfunc
let g:buf1 = term_start('sh', #{hidden: 1, term_finish: 'close'})
call popup_create(g:buf1, {})
let g:buf2 = term_start(['sh', '-c'], #{curwin: 1, exit_cb: function('TermExit')})
- call term_wait(g:buf2, 100)
+ call TermWait(g:buf2, 50)
call popup_close(win_getid())
endfunc
func TermExit(...)
let altbuf = bufnr('#')
call term_sendkeys(altbuf, "exit\<CR>")
- call term_wait(altbuf)
+ call TermWait(altbuf)
call popup_close(win_getid())
endfunc
call OpenTerms()
call term_sendkeys(g:buf0, "exit\<CR>")
- call term_wait(g:buf0, 100)
+ call TermWait(g:buf0, 50)
exe g:buf0 .. 'bwipe!'
set hidden&
endfunc
func Test_terminal_redir_fails()
if has('unix')
let buf = term_start('xyzabc', {'err_io': 'file', 'err_name': 'Xfile'})
- call term_wait(buf)
+ call TermWait(buf)
call WaitFor('len(readfile("Xfile")) > 0')
call assert_match('executing job failed', readfile('Xfile')[0])
call WaitFor('!&modified')
call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))})
" GC must not run during timer callback, which can make Vim crash.
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call term_sendkeys(buf, "\<CR>")
- call term_wait(buf, 100)
+ call TermWait(buf, 50)
call assert_equal('run', job_status(job))
call term_sendkeys(buf, ":qall!\<CR>")
" Deep nesting of if ... endif
call term_sendkeys(buf, ":call Test1()\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E579:', term_getline(buf, 5))})
" Deep nesting of for ... endfor
call term_sendkeys(buf, ":call Test2()\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E585:', term_getline(buf, 5))})
" Deep nesting of while ... endwhile
call term_sendkeys(buf, ":call Test3()\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E585:', term_getline(buf, 5))})
" Deep nesting of try ... endtry
call term_sendkeys(buf, ":call Test4()\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E601:', term_getline(buf, 5))})
" Deep nesting of function ... endfunction
call term_sendkeys(buf, ":call Test5()\n")
- call term_wait(buf)
+ call TermWait(buf)
call WaitForAssert({-> assert_match('^E1058:', term_getline(buf, 4))})
call term_sendkeys(buf, "\<C-C>\n")
- call term_wait(buf)
+ call TermWait(buf)
"let l = ''
"for i in range(1, 6)
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 533,
/**/
532,
/**/