changeset 25969:a5a772dace5b v8.2.3518

patch 8.2.3518: Test_xrestore sometimes fails Commit: https://github.com/vim/vim/commit/f08b0eb8691ff09f98bc4beef986ece1c521655f Author: Bram Moolenaar <Bram@vim.org> Date: Sat Oct 16 13:00:14 2021 +0100 patch 8.2.3518: Test_xrestore sometimes fails Problem: Test_xrestore sometimes fails. Solution: Mark the test as flayky. Move marking test as flaky to the test instead of listing them in runtest.
author Bram Moolenaar <Bram@vim.org>
date Sat, 16 Oct 2021 14:15:04 +0200
parents c506b33fff84
children 7804974af9b2
files src/testdir/runtest.vim src/testdir/test_autocmd.vim src/testdir/test_channel.vim src/testdir/test_clientserver.vim src/testdir/test_diffmode.vim src/testdir/test_functions.vim src/testdir/test_gui.vim src/testdir/test_mapping.vim src/testdir/test_paste.vim src/testdir/test_popup.vim src/testdir/test_quotestar.vim src/testdir/test_reltime.vim src/testdir/test_terminal.vim src/testdir/test_terminal2.vim src/testdir/test_timers.vim src/version.c
diffstat 16 files changed, 35 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -404,42 +404,6 @@ else
   endtry
 endif
 
-" Names of flaky tests.
-let s:flaky_tests = [
-      \ 'Test_BufWrite_lockmarks()',
-      \ 'Test_autocmd_SafeState()',
-      \ 'Test_bufunload_all()',
-      \ 'Test_client_server()',
-      \ 'Test_close_and_exit_cb()',
-      \ 'Test_close_output_buffer()',
-      \ 'Test_collapse_buffers()',
-      \ 'Test_cwd()',
-      \ 'Test_diff_screen()',
-      \ 'Test_exit_callback_interval()',
-      \ 'Test_map_timeout_with_timer_interrupt()',
-      \ 'Test_out_cb()',
-      \ 'Test_pipe_through_sort_all()',
-      \ 'Test_pipe_through_sort_some()',
-      \ 'Test_popup_and_window_resize()',
-      \ 'Test_quoteplus()',
-      \ 'Test_quotestar()',
-      \ 'Test_reltime()',
-      \ 'Test_state()',
-      \ 'Test_terminal_composing_unicode()',
-      \ 'Test_terminal_does_not_truncate_last_newlines()',
-      \ 'Test_terminal_no_cmd()',
-      \ 'Test_terminal_noblock()',
-      \ 'Test_terminal_redir_file()',
-      \ 'Test_termwinscroll()',
-      \ '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()',
-      \ ]
-
 " Locate Test_ functions and execute them.
 redir @q
 silent function /^Test_
@@ -491,8 +455,7 @@ for g:testfunc in sort(s:tests)
   " - it fails five times (with a different message)
   if len(v:errors) > 0
         \ && $TEST_NO_RETRY == ''
-        \ && (index(s:flaky_tests, g:testfunc) >= 0
-        \      || g:test_is_flaky)
+        \ && g:test_is_flaky
     while 1
       call add(s:messages, 'Found errors in ' . g:testfunc . ':')
       call extend(s:messages, v:errors)
index 7faa4551d17afe35cbf889618879b2b35d4f0326..3893b79a651d53e82cf76225cff2a5fc01afcfce
GIT binary patch
literal 86111
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
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -795,6 +795,7 @@ func Test_pipe_to_buffer_name_nomsg()
 endfunc
 
 func Test_close_output_buffer()
+  let g:test_is_flaky = 1
   enew!
   let test_lines = ['one', 'two']
   call setline(1, test_lines)
@@ -935,6 +936,7 @@ endfunc
 
 func Run_pipe_through_sort(all, use_buffer)
   CheckExecutable sort
+  let g:test_is_flaky = 1
 
   let options = {'out_io': 'buffer', 'out_name': 'sortout'}
   if a:use_buffer
@@ -1206,6 +1208,7 @@ func Test_reuse_channel()
 endfunc
 
 func Test_out_cb()
+  let g:test_is_flaky = 1
   let dict = {'thisis': 'dict: '}
   func dict.outHandler(chan, msg) dict
     if type(a:msg) == v:t_string
@@ -1333,6 +1336,7 @@ func Test_out_cb_lambda()
 endfunc
 
 func Test_close_and_exit_cb()
+  let g:test_is_flaky = 1
   let g:retdict = {'ret': {}}
   func g:retdict.close_cb(ch) dict
     let self.ret['close_cb'] = a:ch->ch_getjob()->job_status()
@@ -1560,6 +1564,7 @@ endfunction
 
 func Test_exit_callback_interval()
   CheckFunction reltimefloat
+  let g:test_is_flaky = 1
 
   let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
   let job = [s:python, '-c', 'import time;time.sleep(0.5)']->job_start({'exit_cb': 'MyExitTimeCb'})
@@ -1742,6 +1747,7 @@ func Test_using_freed_memory()
 endfunc
 
 func Test_collapse_buffers()
+  let g:test_is_flaky = 1
   CheckExecutable cat
 
   sp test_channel.vim
@@ -1884,6 +1890,7 @@ func Test_env()
 endfunc
 
 func Test_cwd()
+  let g:test_is_flaky = 1
   let g:envstr = ''
   if has('win32')
     let expect = $TEMP
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -26,6 +26,7 @@ func Check_X11_Connection()
 endfunc
 
 func Test_client_server()
+  let g:test_is_flaky = 1
   let cmd = GetVimCommand()
   if cmd == ''
     throw 'GetVimCommand() failed'
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -845,6 +845,7 @@ func VerifyInternal(buf, dumpfile, extra
 endfunc
 
 func Test_diff_screen()
+  let g:test_is_flaky = 1
   CheckScreendump
   CheckFeature menu
 
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -2286,6 +2286,7 @@ endfunc
 
 func Test_state()
   CheckRunVimInTerminal
+  let g:test_is_flaky = 1
 
   let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\<CR>"
 
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -120,6 +120,7 @@ func Test_getwinpos()
 endfunc
 
 func Test_quoteplus()
+  let g:test_is_flaky = 1
   let skipped = ''
 
   if !g:x11_based_gui
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -289,6 +289,7 @@ endfunc
 func Test_map_timeout_with_timer_interrupt()
   CheckFeature job
   CheckFeature timers
+  let g:test_is_flaky = 1
 
   " Confirm the timer invoked in exit_cb of the job doesn't disturb mapped key
   " sequence.
@@ -1155,7 +1156,7 @@ func Test_map_cmdkey_visual_mode()
   call feedkeys("v\<F4>", 'xt!')
   call assert_equal(['v', 1, 12], [mode(1), col('v'), col('.')])
 
-  " can invoke an opeartor, ending the visual mode
+  " can invoke an operator, ending the visual mode
   let @a = ''
   call feedkeys("\<F5>", 'xt!')
   call assert_equal('n', mode(1))
--- a/src/testdir/test_paste.vim
+++ b/src/testdir/test_paste.vim
@@ -136,6 +136,8 @@ endfunc
 
 func Test_xrestore()
   CheckFeature xterm_clipboard
+  let g:test_is_flaky = 1
+
   let display = $DISPLAY
   new
   call CheckCopyPaste()
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -665,6 +665,7 @@ func Test_popup_and_window_resize()
   CheckFeature terminal
   CheckFeature quickfix
   CheckNotGui
+  let g:test_is_flaky = 1
 
   let h = winheight(0)
   if h < 15
--- a/src/testdir/test_quotestar.vim
+++ b/src/testdir/test_quotestar.vim
@@ -131,6 +131,7 @@ func Do_test_quotestar_for_x11()
 endfunc
 
 func Test_quotestar()
+  let g:test_is_flaky = 1
   let skipped = ''
 
   let quotestar_saved = @*
--- a/src/testdir/test_reltime.vim
+++ b/src/testdir/test_reltime.vim
@@ -5,6 +5,7 @@ CheckFeature reltime
 CheckFeature float
 
 func Test_reltime()
+  let g:test_is_flaky = 1
   let now = reltime()
   sleep 10m
   let later = reltime()
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -698,6 +698,7 @@ func Test_terminal_list_args()
 endfunction
 
 func Test_terminal_noblock()
+  let g:test_is_flaky = 1
   let buf = term_start(&shell)
   let wait_time = 5000
   let letters = 'abcdefghijklmnopqrstuvwxyz'
@@ -805,6 +806,7 @@ func Test_terminal_duplicate_eof_arg()
 endfunc
 
 func Test_terminal_no_cmd()
+  let g:test_is_flaky = 1
   let buf = term_start('NONE', {})
   call assert_notequal(0, buf)
 
@@ -855,6 +857,7 @@ func Test_terminal_wrong_options()
 endfunc
 
 func Test_terminal_redir_file()
+  let g:test_is_flaky = 1
   let cmd = Get_cat_123_cmd()
   let buf = term_start(cmd, {'out_io': 'file', 'out_name': 'Xfile'})
   call TermWait(buf)
@@ -946,6 +949,7 @@ func Test_terminal_wqall()
 endfunc
 
 func Test_terminal_composing_unicode()
+  let g:test_is_flaky = 1
   let save_enc = &encoding
   set encoding=utf-8
 
--- a/src/testdir/test_terminal2.vim
+++ b/src/testdir/test_terminal2.vim
@@ -217,6 +217,7 @@ func Test_termwinscroll()
   CheckUnix
   " TODO: Somehow this test sometimes hangs in the GUI
   CheckNotGui
+  let g:test_is_flaky = 1
 
   " Let the terminal output more than 'termwinscroll' lines, some at the start
   " will be dropped.
@@ -412,6 +413,7 @@ func Test_terminal_does_not_truncate_las
   if has('conpty')
     throw 'Skipped: fail on ConPTY'
   endif
+  let g:test_is_flaky = 1
   let contents = [
   \   [ 'One', '', 'X' ],
   \   [ 'Two', '', '' ],
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -16,6 +16,7 @@ func MyHandlerWithLists(lists, timer)
 endfunc
 
 func Test_timer_oneshot()
+  let g:test_is_flaky = 1
   let g:val = 0
   let timer = timer_start(50, 'MyHandler')
   let slept = WaitFor('g:val == 1')
@@ -34,6 +35,7 @@ func Test_timer_oneshot()
 endfunc
 
 func Test_timer_repeat_three()
+  let g:test_is_flaky = 1
   let g:val = 0
   let timer = timer_start(50, 'MyHandler', {'repeat': 3})
   let slept = WaitFor('g:val == 3')
@@ -51,6 +53,7 @@ func Test_timer_repeat_three()
 endfunc
 
 func Test_timer_repeat_many()
+  let g:test_is_flaky = 1
   let g:val = 0
   let timer = timer_start(50, 'MyHandler', {'repeat': -1})
   sleep 200m
@@ -64,6 +67,7 @@ func Test_timer_repeat_many()
 endfunc
 
 func Test_timer_with_partial_callback()
+  let g:test_is_flaky = 1
   let g:val = 0
   let meow = {'one': 1}
   function meow.bite(...)
@@ -127,6 +131,7 @@ func Test_timer_stopall()
 endfunc
 
 func Test_timer_paused()
+  let g:test_is_flaky = 1
   let g:val = 0
 
   let id = timer_start(50, 'MyHandler')
@@ -186,6 +191,7 @@ func StopTimer2(timer)
 endfunc
 
 func Test_timer_stop_in_callback()
+  let g:test_is_flaky = 1
   call assert_equal(0, len(timer_info()))
   let g:timer1 = timer_start(10, 'StopTimer1')
   let slept = 0
@@ -205,6 +211,7 @@ func StopTimerAll(timer)
 endfunc
 
 func Test_timer_stop_all_in_callback()
+  let g:test_is_flaky = 1
   call assert_equal(0, len(timer_info()))
   call timer_start(10, 'StopTimerAll')
   call assert_equal(1, len(timer_info()))
@@ -471,4 +478,5 @@ func Test_timer_outputting_message()
   call delete('XTest_timermessage')
 endfunc
 
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3518,
+/**/
     3517,
 /**/
     3516,