mirror of
https://github.com/vim/vim.git
synced 2026-05-28 00:21:37 +02:00
patch 9.2.0396: tests: Test_error_callback_terminal is flaky on macOS
Problem: tests: Test_error_callback_terminal is flaky on macOS
Solution: Use WaitForAssert() to make it more reliable
(Yasuhiro Matsumoto).
term_wait() only waits for terminal screen updates and does not
guarantee that the err_io 'pipe' callback has fired, so on macOS
the assert_match() against g:error frequently runs before sh has
written "sh: XXXX: not found", causing the test to flake.
Replace term_wait() + assert_match() with WaitForAssert() so each
assertion polls until the callback delivers the expected output.
Also defer sending "exit" until the stderr message has been seen,
to avoid losing the stderr write to the exit race.
closes: #20075
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
bf6892aaab
commit
2baef82cd1
@@ -2922,11 +2922,11 @@ func Test_error_callback_terminal()
|
||||
call assert_equal('RAW', dict.err_mode)
|
||||
call assert_equal('pipe', dict.err_io)
|
||||
call term_sendkeys(buf, "XXXX\<cr>")
|
||||
call term_wait(buf)
|
||||
" term_wait() does not wait for the err_io 'pipe' callback to fire, so use
|
||||
" WaitForAssert() to poll until sh has written the error message.
|
||||
call WaitForAssert({-> assert_match('sh:.*XXXX:.*not found', g:error)}, 5000)
|
||||
call term_sendkeys(buf, "exit\<cr>")
|
||||
call term_wait(buf)
|
||||
call assert_match('XXX.*exit', g:out)
|
||||
call assert_match('sh:.*XXXX:.*not found', g:error)
|
||||
call WaitForAssert({-> assert_match('XXX.*exit', g:out)}, 5000)
|
||||
|
||||
delfunc s:Out
|
||||
delfunc s:Err
|
||||
|
||||
@@ -729,6 +729,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
396,
|
||||
/**/
|
||||
395,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user