To: vim_dev@googlegroups.com Subject: Patch 8.2.0454 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0454 Problem: Some tests fail when the system is slow. Solution: Make the run number global, use in the test to increase the waiting time. (closes #5841) Files: src/testdir/runtest.vim, src/testdir/test_functions.vim *** ../vim-8.2.0453/src/testdir/runtest.vim 2020-03-21 15:17:16.820725431 +0100 --- src/testdir/runtest.vim 2020-03-26 16:45:31.294317187 +0100 *************** *** 406,412 **** set belloff=all let prev_error = '' let total_errors = [] ! let run_nr = 1 " A test can set test_is_flaky to retry running the test. let test_is_flaky = 0 --- 406,412 ---- set belloff=all let prev_error = '' let total_errors = [] ! let g:run_nr = 1 " A test can set test_is_flaky to retry running the test. let test_is_flaky = 0 *************** *** 423,432 **** call add(s:messages, 'Found errors in ' . s:test . ':') call extend(s:messages, v:errors) ! call add(total_errors, 'Run ' . run_nr . ':') call extend(total_errors, v:errors) ! if run_nr == 5 || prev_error == v:errors[0] call add(total_errors, 'Flaky test failed too often, giving up') let v:errors = total_errors break --- 423,432 ---- call add(s:messages, 'Found errors in ' . s:test . ':') call extend(s:messages, v:errors) ! call add(total_errors, 'Run ' . g:run_nr . ':') call extend(total_errors, v:errors) ! if g:run_nr == 5 || prev_error == v:errors[0] call add(total_errors, 'Flaky test failed too often, giving up') let v:errors = total_errors break *************** *** 441,447 **** let prev_error = v:errors[0] let v:errors = [] ! let run_nr += 1 call RunTheTest(s:test) --- 441,447 ---- let prev_error = v:errors[0] let v:errors = [] ! let g:run_nr += 1 call RunTheTest(s:test) *** ../vim-8.2.0453/src/testdir/test_functions.vim 2020-03-25 22:23:41.898363595 +0100 --- src/testdir/test_functions.vim 2020-03-26 16:49:11.733512391 +0100 *************** *** 1832,1837 **** --- 1832,1848 ---- func Test_state() CheckRunVimInTerminal + " In the first run try a short wait time. If the test fails retry with a + " longer wait time. + if g:run_nr == 1 + let wait_time = 50 + elseif g:run_nr == 2 + let wait_time = 200 + else + let wait_time = 500 + endif + let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\" + let lines =<< trim END call setline(1, ['one', 'two', 'three']) map ;; gg *************** *** 1851,1878 **** " Using a timer callback call term_sendkeys(buf, ":call RunTimer()\") ! call term_wait(buf, 50) ! let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\" call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: c; mode: n', term_getline(buf, 6))}, 1000) " Halfway a mapping call term_sendkeys(buf, ":call RunTimer()\;") ! call term_wait(buf, 50) call term_sendkeys(buf, ";") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: mSc; mode: n', term_getline(buf, 6))}, 1000) " Insert mode completion (bit slower on Mac) call term_sendkeys(buf, ":call RunTimer()\Got\") ! call term_wait(buf, 200) call term_sendkeys(buf, "\") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: aSc; mode: i', term_getline(buf, 6))}, 1000) " Autocommand executing call term_sendkeys(buf, ":set filetype=foobar\") ! call term_wait(buf, 50) call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: xS; mode: n', term_getline(buf, 6))}, 1000) --- 1862,1888 ---- " Using a timer callback call term_sendkeys(buf, ":call RunTimer()\") ! call term_wait(buf, wait_time) call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: c; mode: n', term_getline(buf, 6))}, 1000) " Halfway a mapping call term_sendkeys(buf, ":call RunTimer()\;") ! call term_wait(buf, wait_time) call term_sendkeys(buf, ";") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: mSc; mode: n', term_getline(buf, 6))}, 1000) " Insert mode completion (bit slower on Mac) call term_sendkeys(buf, ":call RunTimer()\Got\") ! call term_wait(buf, wait_time) call term_sendkeys(buf, "\") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: aSc; mode: i', term_getline(buf, 6))}, 1000) " Autocommand executing call term_sendkeys(buf, ":set filetype=foobar\") ! call term_wait(buf, wait_time) call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: xS; mode: n', term_getline(buf, 6))}, 1000) *************** *** 1880,1886 **** " messages scrolled call term_sendkeys(buf, ":call RunTimer()\:echo \"one\\ntwo\\nthree\"\") ! call term_wait(buf, 50) call term_sendkeys(buf, "\") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: Scs; mode: r', term_getline(buf, 6))}, 1000) --- 1890,1896 ---- " messages scrolled call term_sendkeys(buf, ":call RunTimer()\:echo \"one\\ntwo\\nthree\"\") ! call term_wait(buf, wait_time) call term_sendkeys(buf, "\") call term_sendkeys(buf, getstate) call WaitForAssert({-> assert_match('state: Scs; mode: r', term_getline(buf, 6))}, 1000) *** ../vim-8.2.0453/src/version.c 2020-03-26 16:27:34.942445362 +0100 --- src/version.c 2020-03-26 16:46:44.622046573 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 454, /**/ -- Q: How many hardware engineers does it take to change a lightbulb? A: None. We'll fix it in software. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///