1
0
forked from aniani/vim

patch 8.2.0400: not all tests using a terminal are in the list of flaky tests

Problem:    Not all tests using a terminal are in the list of flaky tests.
Solution:   Introduce the test_is_flaky flag.
This commit is contained in:
Bram Moolenaar
2020-03-18 19:18:10 +01:00
parent 292b90d4fa
commit 3cdcb090a6
5 changed files with 17 additions and 4 deletions

View File

@@ -379,9 +379,6 @@ let s:flaky_tests = [
\ 'Test_zz1_terminal_in_gui()', \ 'Test_zz1_terminal_in_gui()',
\ ] \ ]
" Pattern indicating a common flaky test failure.
let s:flaky_errors_re = 'StopVimInTerminal\|VerifyScreenDump'
" Locate Test_ functions and execute them. " Locate Test_ functions and execute them.
redir @q redir @q
silent function /^Test_ silent function /^Test_
@@ -410,6 +407,9 @@ for s:test in sort(s:tests)
let total_errors = [] let total_errors = []
let run_nr = 1 let run_nr = 1
" A test can set test_is_flaky to retry running the test.
let test_is_flaky = 0
call RunTheTest(s:test) call RunTheTest(s:test)
" Repeat a flaky test. Give up when: " Repeat a flaky test. Give up when:
@@ -417,7 +417,7 @@ for s:test in sort(s:tests)
" - it fails five times (with a different message) " - it fails five times (with a different message)
if len(v:errors) > 0 if len(v:errors) > 0
\ && (index(s:flaky_tests, s:test) >= 0 \ && (index(s:flaky_tests, s:test) >= 0
\ || v:errors[0] =~ s:flaky_errors_re) \ || test_is_flaky)
while 1 while 1
call add(s:messages, 'Found errors in ' . s:test . ':') call add(s:messages, 'Found errors in ' . s:test . ':')
call extend(s:messages, v:errors) call extend(s:messages, v:errors)

View File

@@ -24,6 +24,9 @@ func VerifyScreenDump(buf, filename, options, ...)
let reference = 'dumps/' . a:filename . '.dump' let reference = 'dumps/' . a:filename . '.dump'
let testfile = 'failed/' . a:filename . '.dump' let testfile = 'failed/' . a:filename . '.dump'
" Starting a terminal to make a screendump is always considered flaky.
let test_is_flaky = 1
" Redraw to execute the code that updates the screen. Otherwise we get the " Redraw to execute the code that updates the screen. Otherwise we get the
" text and attributes only from the internal buffer. " text and attributes only from the internal buffer.
redraw redraw

View File

@@ -93,11 +93,17 @@ func RunVimInTerminal(arguments, options)
call assert_report('RunVimInTerminal() failed, screen contents: ' . join(lines, "<NL>")) call assert_report('RunVimInTerminal() failed, screen contents: ' . join(lines, "<NL>"))
endtry endtry
" Starting a terminal to run Vim is always considered flaky.
let test_is_flaky = 1
return buf return buf
endfunc endfunc
" Stop a Vim running in terminal buffer "buf". " Stop a Vim running in terminal buffer "buf".
func StopVimInTerminal(buf) func StopVimInTerminal(buf)
" Using a terminal to run Vim is always considered flaky.
let test_is_flaky = 1
call assert_equal("running", term_getstatus(a:buf)) call assert_equal("running", term_getstatus(a:buf))
" CTRL-O : works both in Normal mode and Insert mode to start a command line. " CTRL-O : works both in Normal mode and Insert mode to start a command line.

View File

@@ -1868,6 +1868,8 @@ endfunc
func Test_Changed_FirstTime() func Test_Changed_FirstTime()
CheckFeature terminal CheckFeature terminal
CheckNotGui CheckNotGui
" Starting a terminal to run Vim is always considered flaky.
let test_is_flaky = 1
" Prepare file for TextChanged event. " Prepare file for TextChanged event.
call writefile([''], 'Xchanged.txt') call writefile([''], 'Xchanged.txt')

View File

@@ -738,6 +738,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 */
/**/
400,
/**/ /**/
399, 399,
/**/ /**/