mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.1260: using global variables for WaitFor()
Problem: Using global variables for WaitFor(). Solution: Use a lambda function instead. Don't check a condition if WaitFor() already checked it.
This commit is contained in:
@@ -274,12 +274,10 @@ func Ch_channel_handler(port)
|
|||||||
" Test that it works while waiting on a numbered message.
|
" Test that it works while waiting on a numbered message.
|
||||||
call assert_equal('ok', ch_evalexpr(handle, 'call me'))
|
call assert_equal('ok', ch_evalexpr(handle, 'call me'))
|
||||||
call WaitFor('"we called you" == g:Ch_reply')
|
call WaitFor('"we called you" == g:Ch_reply')
|
||||||
call assert_equal('we called you', g:Ch_reply)
|
|
||||||
|
|
||||||
" Test that it works while not waiting on a numbered message.
|
" Test that it works while not waiting on a numbered message.
|
||||||
call ch_sendexpr(handle, 'call me again')
|
call ch_sendexpr(handle, 'call me again')
|
||||||
call WaitFor('"we did call you" == g:Ch_reply')
|
call WaitFor('"we did call you" == g:Ch_reply')
|
||||||
call assert_equal('we did call you', g:Ch_reply)
|
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_channel_handler()
|
func Test_channel_handler()
|
||||||
@@ -322,7 +320,6 @@ func Ch_channel_zero(port)
|
|||||||
call assert_equal('sent zero', ch_evalexpr(handle, 'send zero'))
|
call assert_equal('sent zero', ch_evalexpr(handle, 'send zero'))
|
||||||
if s:has_handler
|
if s:has_handler
|
||||||
call WaitFor('"zero index" == g:Ch_reply')
|
call WaitFor('"zero index" == g:Ch_reply')
|
||||||
call assert_equal('zero index', g:Ch_reply)
|
|
||||||
else
|
else
|
||||||
sleep 20m
|
sleep 20m
|
||||||
call assert_equal('', g:Ch_reply)
|
call assert_equal('', g:Ch_reply)
|
||||||
@@ -338,7 +335,6 @@ func Ch_channel_zero(port)
|
|||||||
else
|
else
|
||||||
call assert_equal('', g:Ch_reply)
|
call assert_equal('', g:Ch_reply)
|
||||||
endif
|
endif
|
||||||
call assert_equal('sent zero', g:Ch_zero_reply)
|
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_zero_reply()
|
func Test_zero_reply()
|
||||||
@@ -1468,7 +1464,7 @@ func Test_exit_callback_interval()
|
|||||||
let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
|
let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
|
||||||
let job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], {'exit_cb': 'MyExitTimeCb'})
|
let job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], {'exit_cb': 'MyExitTimeCb'})
|
||||||
let g:exit_cb_val.process = job_info(job).process
|
let g:exit_cb_val.process = job_info(job).process
|
||||||
call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0')
|
call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0', 2000)
|
||||||
let elapsed = reltimefloat(g:exit_cb_val.end)
|
let elapsed = reltimefloat(g:exit_cb_val.end)
|
||||||
call assert_true(elapsed > 0.5)
|
call assert_true(elapsed > 0.5)
|
||||||
call assert_true(elapsed < 1.0)
|
call assert_true(elapsed < 1.0)
|
||||||
|
@@ -27,12 +27,8 @@ func Test_client_server()
|
|||||||
|
|
||||||
let name = 'XVIMTEST'
|
let name = 'XVIMTEST'
|
||||||
let cmd .= ' --servername ' . name
|
let cmd .= ' --servername ' . name
|
||||||
let g:job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
|
let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
|
||||||
call WaitFor('job_status(g:job) == "run"')
|
call WaitFor({-> job_status(job) == "run"})
|
||||||
if job_status(g:job) != 'run'
|
|
||||||
call assert_report('Cannot run the Vim server')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Takes a short while for the server to be active.
|
" Takes a short while for the server to be active.
|
||||||
" When using valgrind it takes much longer.
|
" When using valgrind it takes much longer.
|
||||||
@@ -83,7 +79,7 @@ func Test_client_server()
|
|||||||
call remote_send(name, ":call server2client(expand('<client>'), 'another')\<CR>", 'g:myserverid')
|
call remote_send(name, ":call server2client(expand('<client>'), 'another')\<CR>", 'g:myserverid')
|
||||||
let peek_result = 'nothing'
|
let peek_result = 'nothing'
|
||||||
let r = remote_peek(g:myserverid, 'peek_result')
|
let r = remote_peek(g:myserverid, 'peek_result')
|
||||||
" unpredictable whether the result is already avaialble.
|
" unpredictable whether the result is already available.
|
||||||
if r > 0
|
if r > 0
|
||||||
call assert_equal('another', peek_result)
|
call assert_equal('another', peek_result)
|
||||||
elseif r == 0
|
elseif r == 0
|
||||||
@@ -97,11 +93,14 @@ func Test_client_server()
|
|||||||
call assert_equal('another', remote_read(g:myserverid, 2))
|
call assert_equal('another', remote_read(g:myserverid, 2))
|
||||||
|
|
||||||
call remote_send(name, ":qa!\<CR>")
|
call remote_send(name, ":qa!\<CR>")
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
try
|
||||||
if job_status(g:job) != 'dead'
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call assert_report('Server did not exit')
|
finally
|
||||||
call job_stop(g:job, 'kill')
|
if job_status(job) != 'dead'
|
||||||
endif
|
call assert_report('Server did not exit')
|
||||||
|
call job_stop(job, 'kill')
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" Uncomment this line to get a debugging log
|
" Uncomment this line to get a debugging log
|
||||||
|
@@ -6,14 +6,11 @@ source shared.vim
|
|||||||
|
|
||||||
func Test_job_start_fails()
|
func Test_job_start_fails()
|
||||||
if has('job')
|
if has('job')
|
||||||
let g:job = job_start('axdfxsdf')
|
let job = job_start('axdfxsdf')
|
||||||
if has('unix')
|
if has('unix')
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call assert_equal('dead', job_status(g:job))
|
|
||||||
else
|
else
|
||||||
call WaitFor('job_status(g:job) == "fail"')
|
call WaitFor({-> job_status(job) == "fail"})
|
||||||
call assert_equal('fail', job_status(g:job))
|
|
||||||
endif
|
endif
|
||||||
unlet g:job
|
|
||||||
endif
|
endif
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -638,30 +638,30 @@ func Test_popup_and_window_resize()
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
let rows = h / 3
|
let rows = h / 3
|
||||||
let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], {'term_rows': rows})
|
let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], {'term_rows': rows})
|
||||||
call term_sendkeys(g:buf, (h / 3 - 1) . "o\<esc>")
|
call term_sendkeys(buf, (h / 3 - 1) . "o\<esc>")
|
||||||
" Wait for the nested Vim to exit insert mode, where it will show the ruler.
|
" Wait for the nested Vim to exit insert mode, where it will show the ruler.
|
||||||
" Need to trigger a redraw.
|
" Need to trigger a redraw.
|
||||||
call WaitFor(printf('execute("redraw") == "" && term_getline(g:buf, %d) =~ "\\<%d,.*Bot"', rows, rows))
|
call WaitFor({-> execute("redraw") == "" && term_getline(buf, rows) =~ '\<' . rows . ',.*Bot'})
|
||||||
|
|
||||||
call term_sendkeys(g:buf, "Gi\<c-x>")
|
call term_sendkeys(buf, "Gi\<c-x>")
|
||||||
call term_sendkeys(g:buf, "\<c-v>")
|
call term_sendkeys(buf, "\<c-v>")
|
||||||
call term_wait(g:buf, 100)
|
call term_wait(buf, 100)
|
||||||
" popup first entry "!" must be at the top
|
" popup first entry "!" must be at the top
|
||||||
call WaitFor('term_getline(g:buf, 1) =~ "^!"')
|
call WaitFor({-> term_getline(buf, 1) =~ "^!"})
|
||||||
call assert_match('^!\s*$', term_getline(g:buf, 1))
|
call assert_match('^!\s*$', term_getline(buf, 1))
|
||||||
exe 'resize +' . (h - 1)
|
exe 'resize +' . (h - 1)
|
||||||
call term_wait(g:buf, 100)
|
call term_wait(buf, 100)
|
||||||
redraw!
|
redraw!
|
||||||
" popup shifted down, first line is now empty
|
" popup shifted down, first line is now empty
|
||||||
call WaitFor('term_getline(g:buf, 1) == ""')
|
call WaitFor({-> term_getline(buf, 1) == ""})
|
||||||
call assert_equal('', term_getline(g:buf, 1))
|
call assert_equal('', term_getline(buf, 1))
|
||||||
sleep 100m
|
sleep 100m
|
||||||
" popup is below cursor line and shows first match "!"
|
" popup is below cursor line and shows first match "!"
|
||||||
call WaitFor('term_getline(g:buf, term_getcursor(g:buf)[0] + 1) =~ "^!"')
|
call WaitFor({-> term_getline(buf, term_getcursor(buf)[0] + 1) =~ "^!"})
|
||||||
call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0] + 1))
|
call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0] + 1))
|
||||||
" cursor line also shows !
|
" cursor line also shows !
|
||||||
call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0]))
|
call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0]))
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@@ -60,12 +60,8 @@ func Do_test_quotestar_for_x11()
|
|||||||
call assert_notmatch(name, serverlist())
|
call assert_notmatch(name, serverlist())
|
||||||
|
|
||||||
let cmd .= ' --servername ' . name
|
let cmd .= ' --servername ' . name
|
||||||
let g:job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
|
let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
|
||||||
call WaitFor('job_status(g:job) == "run"')
|
call WaitFor({-> job_status(job) == "run"})
|
||||||
if job_status(g:job) != 'run'
|
|
||||||
call assert_report('Cannot run the Vim server')
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Takes a short while for the server to be active.
|
" Takes a short while for the server to be active.
|
||||||
call WaitFor('serverlist() =~ "' . name . '"')
|
call WaitFor('serverlist() =~ "' . name . '"')
|
||||||
@@ -124,11 +120,14 @@ func Do_test_quotestar_for_x11()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call remote_send(name, ":qa!\<CR>")
|
call remote_send(name, ":qa!\<CR>")
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
try
|
||||||
if job_status(g:job) != 'dead'
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call assert_report('Server did not exit')
|
finally
|
||||||
call job_stop(g:job, 'kill')
|
if job_status(job) != 'dead'
|
||||||
endif
|
call assert_report('Server did not exit')
|
||||||
|
call job_stop(job, 'kill')
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
|
||||||
return ''
|
return ''
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -189,15 +189,14 @@ func Test_terminal_scrape_123()
|
|||||||
call term_wait(1234)
|
call term_wait(1234)
|
||||||
|
|
||||||
call term_wait(buf)
|
call term_wait(buf)
|
||||||
let g:buf = buf
|
|
||||||
" On MS-Windows we first get a startup message of two lines, wait for the
|
" 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.
|
" "cls" to happen, after that we have one line with three characters.
|
||||||
call WaitFor('len(term_scrape(g:buf, 1)) == 3')
|
call WaitFor({-> len(term_scrape(buf, 1)) == 3})
|
||||||
call Check_123(buf)
|
call Check_123(buf)
|
||||||
|
|
||||||
" Must still work after the job ended.
|
" Must still work after the job ended.
|
||||||
let g:job = term_getjob(buf)
|
let job = term_getjob(buf)
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call term_wait(buf)
|
call term_wait(buf)
|
||||||
call Check_123(buf)
|
call Check_123(buf)
|
||||||
|
|
||||||
@@ -213,17 +212,17 @@ func Test_terminal_scrape_multibyte()
|
|||||||
if has('win32')
|
if has('win32')
|
||||||
" Run cmd with UTF-8 codepage to make the type command print the expected
|
" Run cmd with UTF-8 codepage to make the type command print the expected
|
||||||
" multibyte characters.
|
" multibyte characters.
|
||||||
let g:buf = term_start("cmd /K chcp 65001")
|
let buf = term_start("cmd /K chcp 65001")
|
||||||
call term_sendkeys(g:buf, "type Xtext\<CR>")
|
call term_sendkeys(buf, "type Xtext\<CR>")
|
||||||
call term_sendkeys(g:buf, "exit\<CR>")
|
call term_sendkeys(buf, "exit\<CR>")
|
||||||
let g:line = 4
|
let line = 4
|
||||||
else
|
else
|
||||||
let g:buf = term_start("cat Xtext")
|
let buf = term_start("cat Xtext")
|
||||||
let g:line = 1
|
let line = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call WaitFor('len(term_scrape(g:buf, g:line)) >= 7 && term_scrape(g:buf, g:line)[0].chars == "l"')
|
call WaitFor({-> len(term_scrape(buf, line)) >= 7 && term_scrape(buf, line)[0].chars == "l"})
|
||||||
let l = term_scrape(g:buf, g:line)
|
let l = term_scrape(buf, line)
|
||||||
call assert_true(len(l) >= 7)
|
call assert_true(len(l) >= 7)
|
||||||
call assert_equal('l', l[0].chars)
|
call assert_equal('l', l[0].chars)
|
||||||
call assert_equal('é', l[1].chars)
|
call assert_equal('é', l[1].chars)
|
||||||
@@ -235,13 +234,11 @@ func Test_terminal_scrape_multibyte()
|
|||||||
call assert_equal('r', l[5].chars)
|
call assert_equal('r', l[5].chars)
|
||||||
call assert_equal('s', l[6].chars)
|
call assert_equal('s', l[6].chars)
|
||||||
|
|
||||||
let g:job = term_getjob(g:buf)
|
let job = term_getjob(buf)
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call term_wait(g:buf)
|
call term_wait(buf)
|
||||||
|
|
||||||
exe g:buf . 'bwipe'
|
exe buf . 'bwipe'
|
||||||
unlet g:buf
|
|
||||||
unlet g:line
|
|
||||||
call delete('Xtext')
|
call delete('Xtext')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -254,8 +251,8 @@ func Test_terminal_scroll()
|
|||||||
endif
|
endif
|
||||||
let buf = term_start(cmd)
|
let buf = term_start(cmd)
|
||||||
|
|
||||||
let g:job = term_getjob(buf)
|
let job = term_getjob(buf)
|
||||||
call WaitFor('job_status(g:job) == "dead"')
|
call WaitFor({-> job_status(job) == "dead"})
|
||||||
call term_wait(buf)
|
call term_wait(buf)
|
||||||
if has('win32')
|
if has('win32')
|
||||||
" TODO: this should not be needed
|
" TODO: this should not be needed
|
||||||
@@ -483,7 +480,7 @@ func Test_terminal_list_args()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
func Test_terminal_noblock()
|
func Test_terminal_noblock()
|
||||||
let g:buf = term_start(&shell)
|
let buf = term_start(&shell)
|
||||||
if has('mac')
|
if has('mac')
|
||||||
" The shell or something else has a problem dealing with more than 1000
|
" The shell or something else has a problem dealing with more than 1000
|
||||||
" characters at the same time.
|
" characters at the same time.
|
||||||
@@ -493,26 +490,24 @@ func Test_terminal_noblock()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
for c in ['a','b','c','d','e','f','g','h','i','j','k']
|
for c in ['a','b','c','d','e','f','g','h','i','j','k']
|
||||||
call term_sendkeys(g:buf, 'echo ' . repeat(c, len) . "\<cr>")
|
call term_sendkeys(buf, 'echo ' . repeat(c, len) . "\<cr>")
|
||||||
endfor
|
endfor
|
||||||
call term_sendkeys(g:buf, "echo done\<cr>")
|
call term_sendkeys(buf, "echo done\<cr>")
|
||||||
|
|
||||||
" On MS-Windows there is an extra empty line below "done". Find "done" in
|
" On MS-Windows there is an extra empty line below "done". Find "done" in
|
||||||
" the last-but-one or the last-but-two line.
|
" the last-but-one or the last-but-two line.
|
||||||
let g:lnum = term_getsize(g:buf)[0] - 1
|
let lnum = term_getsize(buf)[0] - 1
|
||||||
call WaitFor('term_getline(g:buf, g:lnum) =~ "done" || term_getline(g:buf, g:lnum - 1) =~ "done"', 3000)
|
call WaitFor({-> term_getline(buf, lnum) =~ "done" || term_getline(buf, lnum - 1) =~ "done"}, 3000)
|
||||||
let line = term_getline(g:buf, g:lnum)
|
let line = term_getline(buf, lnum)
|
||||||
if line !~ 'done'
|
if line !~ 'done'
|
||||||
let line = term_getline(g:buf, g:lnum - 1)
|
let line = term_getline(buf, lnum - 1)
|
||||||
endif
|
endif
|
||||||
call assert_match('done', line)
|
call assert_match('done', line)
|
||||||
|
|
||||||
let g:job = term_getjob(g:buf)
|
let g:job = term_getjob(buf)
|
||||||
call Stop_shell_in_terminal(g:buf)
|
call Stop_shell_in_terminal(buf)
|
||||||
call term_wait(g:buf)
|
call term_wait(buf)
|
||||||
unlet g:buf
|
|
||||||
unlet g:job
|
unlet g:job
|
||||||
unlet g:lnum
|
|
||||||
bwipe
|
bwipe
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1260,
|
||||||
/**/
|
/**/
|
||||||
1259,
|
1259,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user