mirror of
https://github.com/neovim/neovim.git
synced 2026-01-06 21:37:43 +00:00
Merge pull request #19277 from zeertzjq/vim-8.1.1855
vim-patch:8.1.{1855,1859,1864,1867}: flaky timer tests
This commit is contained in:
@@ -364,24 +364,25 @@ let s:flaky_tests = [
|
||||
\ 'Test_cursorhold_insert()',
|
||||
\ 'Test_exit_callback_interval()',
|
||||
\ 'Test_map_timeout_with_timer_interrupt()',
|
||||
\ 'Test_oneshot()',
|
||||
\ 'Test_out_cb()',
|
||||
\ 'Test_paused()',
|
||||
\ 'Test_popup_and_window_resize()',
|
||||
\ 'Test_quoteplus()',
|
||||
\ 'Test_quotestar()',
|
||||
\ 'Test_reltime()',
|
||||
\ 'Test_repeat_many()',
|
||||
\ 'Test_repeat_three()',
|
||||
\ 'Test_state()',
|
||||
\ 'Test_stop_all_in_callback()',
|
||||
\ 'Test_term_mouse_double_click_to_create_tab()',
|
||||
\ 'Test_term_mouse_multiple_clicks_to_visually_select()',
|
||||
\ 'Test_terminal_composing_unicode()',
|
||||
\ 'Test_terminal_redir_file()',
|
||||
\ 'Test_terminal_tmap()',
|
||||
\ 'Test_timer_oneshot()',
|
||||
\ 'Test_timer_paused()',
|
||||
\ 'Test_timer_repeat_many()',
|
||||
\ 'Test_timer_repeat_three()',
|
||||
\ 'Test_timer_stop_all_in_callback()',
|
||||
\ 'Test_timer_stop_in_callback()',
|
||||
\ 'Test_timer_with_partial_callback()',
|
||||
\ 'Test_termwinscroll()',
|
||||
\ 'Test_with_partial_callback()',
|
||||
\ ]
|
||||
|
||||
" Locate Test_ functions and execute them.
|
||||
|
||||
@@ -7,6 +7,10 @@ source shared.vim
|
||||
source term_util.vim
|
||||
source load.vim
|
||||
|
||||
func SetUp()
|
||||
call timer_stopall()
|
||||
endfunc
|
||||
|
||||
func MyHandler(timer)
|
||||
let g:val += 1
|
||||
endfunc
|
||||
@@ -15,7 +19,7 @@ func MyHandlerWithLists(lists, timer)
|
||||
let x = string(a:lists)
|
||||
endfunc
|
||||
|
||||
func Test_oneshot()
|
||||
func Test_timer_oneshot()
|
||||
let g:val = 0
|
||||
let timer = timer_start(50, 'MyHandler')
|
||||
let slept = WaitFor('g:val == 1')
|
||||
@@ -27,7 +31,7 @@ func Test_oneshot()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_repeat_three()
|
||||
func Test_timer_repeat_three()
|
||||
let g:val = 0
|
||||
let timer = timer_start(50, 'MyHandler', {'repeat': 3})
|
||||
let slept = WaitFor('g:val == 3')
|
||||
@@ -39,8 +43,7 @@ func Test_repeat_three()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_repeat_many()
|
||||
call timer_stopall()
|
||||
func Test_timer_repeat_many()
|
||||
let g:val = 0
|
||||
let timer = timer_start(50, 'MyHandler', {'repeat': -1})
|
||||
if has('mac')
|
||||
@@ -51,7 +54,7 @@ func Test_repeat_many()
|
||||
call assert_inrange((has('mac') ? 1 : 2), LoadAdjust(5), g:val)
|
||||
endfunc
|
||||
|
||||
func Test_with_partial_callback()
|
||||
func Test_timer_with_partial_callback()
|
||||
let g:val = 0
|
||||
let meow = {'one': 1}
|
||||
function meow.bite(...)
|
||||
@@ -68,13 +71,13 @@ func Test_with_partial_callback()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_retain_partial()
|
||||
func Test_timer_retain_partial()
|
||||
call timer_start(50, function('MyHandlerWithLists', [['a']]))
|
||||
call garbagecollect()
|
||||
call test_garbagecollect_now()
|
||||
sleep 100m
|
||||
endfunc
|
||||
|
||||
func Test_info()
|
||||
func Test_timer_info()
|
||||
let id = timer_start(1000, 'MyHandler')
|
||||
let info = id->timer_info()
|
||||
call assert_equal(id, info[0]['id'])
|
||||
@@ -93,8 +96,7 @@ func Test_info()
|
||||
call assert_equal([], timer_info(id))
|
||||
endfunc
|
||||
|
||||
func Test_stopall()
|
||||
call timer_stopall()
|
||||
func Test_timer_stopall()
|
||||
let id1 = timer_start(1000, 'MyHandler')
|
||||
let id2 = timer_start(2000, 'MyHandler')
|
||||
let info = timer_info()
|
||||
@@ -105,7 +107,7 @@ func Test_stopall()
|
||||
call assert_equal(0, len(info))
|
||||
endfunc
|
||||
|
||||
func Test_paused()
|
||||
func Test_timer_paused()
|
||||
let g:val = 0
|
||||
|
||||
let id = timer_start(50, 'MyHandler')
|
||||
@@ -138,7 +140,7 @@ func StopMyself(timer)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_delete_myself()
|
||||
func Test_timer_delete_myself()
|
||||
let g:called = 0
|
||||
let t = timer_start(10, 'StopMyself', {'repeat': -1})
|
||||
call WaitForAssert({-> assert_equal(2, g:called)})
|
||||
@@ -150,33 +152,45 @@ func StopTimer1(timer)
|
||||
let g:timer2 = 10->timer_start('StopTimer2')
|
||||
" avoid maxfuncdepth error
|
||||
call timer_pause(g:timer1, 1)
|
||||
sleep 40m
|
||||
sleep 20m
|
||||
endfunc
|
||||
|
||||
func StopTimer2(timer)
|
||||
call timer_stop(g:timer1)
|
||||
endfunc
|
||||
|
||||
func Test_stop_in_callback()
|
||||
func Test_timer_stop_in_callback()
|
||||
call assert_equal(0, len(timer_info()))
|
||||
let g:timer1 = timer_start(10, 'StopTimer1')
|
||||
sleep 40m
|
||||
let slept = 0
|
||||
for i in range(10)
|
||||
if len(timer_info()) == 0
|
||||
break
|
||||
endif
|
||||
sleep 10m
|
||||
let slept += 10
|
||||
endfor
|
||||
" This should take only 30 msec, but on Mac it's often longer
|
||||
call assert_inrange(0, 50, slept)
|
||||
endfunc
|
||||
|
||||
func StopTimerAll(timer)
|
||||
call timer_stopall()
|
||||
endfunc
|
||||
|
||||
func Test_stop_all_in_callback()
|
||||
call timer_stopall()
|
||||
let g:timer1 = timer_start(10, 'StopTimerAll')
|
||||
let info = timer_info()
|
||||
call assert_equal(1, len(info))
|
||||
if has('mac')
|
||||
sleep 100m
|
||||
endif
|
||||
sleep 40m
|
||||
let info = timer_info()
|
||||
call assert_equal(0, len(info))
|
||||
func Test_timer_stop_all_in_callback()
|
||||
call assert_equal(0, len(timer_info()))
|
||||
call timer_start(10, 'StopTimerAll')
|
||||
call assert_equal(1, len(timer_info()))
|
||||
let slept = 0
|
||||
for i in range(10)
|
||||
if len(timer_info()) == 0
|
||||
break
|
||||
endif
|
||||
sleep 10m
|
||||
let slept += 10
|
||||
endfor
|
||||
call assert_inrange(0, 30, slept)
|
||||
endfunc
|
||||
|
||||
func FeedkeysCb(timer)
|
||||
@@ -189,7 +203,7 @@ func InputCb(timer)
|
||||
call Resume()
|
||||
endfunc
|
||||
|
||||
func Test_input_in_timer()
|
||||
func Test_timer_input_in_timer()
|
||||
let g:val = ''
|
||||
call timer_start(10, 'InputCb')
|
||||
call Standby(1000)
|
||||
@@ -242,7 +256,7 @@ func Interrupt(timer)
|
||||
call nvim_input("\<C-C>")
|
||||
endfunc
|
||||
|
||||
func Test_peek_and_get_char()
|
||||
func Test_timer_peek_and_get_char()
|
||||
if !has('unix') && !has('gui_running')
|
||||
return
|
||||
endif
|
||||
@@ -253,7 +267,7 @@ func Test_peek_and_get_char()
|
||||
eval intr->timer_stop()
|
||||
endfunc
|
||||
|
||||
func Test_getchar_zero()
|
||||
func Test_timer_getchar_zero()
|
||||
if has('win32') && !has('gui_running')
|
||||
" Console: no low-level input
|
||||
return
|
||||
@@ -271,7 +285,7 @@ func Test_getchar_zero()
|
||||
call timer_stop(id)
|
||||
endfunc
|
||||
|
||||
func Test_ex_mode()
|
||||
func Test_timer_ex_mode()
|
||||
" Function with an empty line.
|
||||
func Foo(...)
|
||||
|
||||
@@ -282,9 +296,9 @@ func Test_ex_mode()
|
||||
call timer_stop(timer)
|
||||
endfunc
|
||||
|
||||
func Test_restore_count()
|
||||
func Test_timer_restore_count()
|
||||
if !CanRunVimInTerminal()
|
||||
return
|
||||
throw 'Skipped: cannot run Vim in a terminal window'
|
||||
endif
|
||||
" Check that v:count is saved and restored, not changed by a timer.
|
||||
call writefile([
|
||||
@@ -315,7 +329,7 @@ endfunc
|
||||
|
||||
" Test that the garbage collector isn't triggered if a timer callback invokes
|
||||
" vgetc().
|
||||
func Test_nocatch_garbage_collect()
|
||||
func Test_timer_nocatch_garbage_collect()
|
||||
" skipped: Nvim does not support test_garbagecollect_soon(), test_override()
|
||||
return
|
||||
" 'uptimetime. must be bigger than the timer timeout
|
||||
@@ -339,7 +353,7 @@ func Test_nocatch_garbage_collect()
|
||||
delfunc FeedChar
|
||||
endfunc
|
||||
|
||||
func Test_error_in_timer_callback()
|
||||
func Test_timer_error_in_timer_callback()
|
||||
if !has('terminal') || (has('win32') && has('gui_running'))
|
||||
throw 'Skipped: cannot run Vim in a terminal window'
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user