# HG changeset patch # User Christian Brabandt # Date 1457007304 -3600 # Node ID cd7ea16d13008149b96348c0ee671f2931d5f02d # Parent 9e0b636dd96d68af3760326d8929ab92fd48605d commit https://github.com/vim/vim/commit/b5760a1ce5b700fc32b8bd11948ee189a847c59e Author: Bram Moolenaar Date: Thu Mar 3 13:10:44 2016 +0100 patch 7.4.1477 Problem: Test_reltime is flaky, it depends on timing. Solution: When it fails run it a second time. diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -72,6 +72,24 @@ function GetAllocId(name) return lnum - top - 1 endfunc +function RunTheTest(test) + echo 'Executing ' . a:test + if exists("*SetUp") + call SetUp() + endif + + call add(s:messages, 'Executing ' . a:test) + let s:done += 1 + try + exe 'call ' . a:test + catch + call add(v:errors, 'Caught exception in ' . a:test . ': ' . v:exception . ' @ ' . v:throwpoint) + endtry + + if exists("*TearDown") + call TearDown() + endif +endfunc " Source the test script. First grab the file name, in case the script " navigates away. g:testname can be used by the tests. @@ -92,6 +110,9 @@ else endtry endif +" Names of flaky tests. +let s:flaky = ['Test_reltime()'] + " Locate Test_ functions and execute them. set nomore redir @q @@ -106,18 +127,13 @@ endif " Execute the tests in alphabetical order. for s:test in sort(s:tests) - echo 'Executing ' . s:test - if exists("*SetUp") - call SetUp() - endif + call RunTheTest(s:test) - call add(s:messages, 'Executing ' . s:test) - let s:done += 1 - try - exe 'call ' . s:test - catch - call add(v:errors, 'Caught exception in ' . s:test . ': ' . v:exception . ' @ ' . v:throwpoint) - endtry + if len(v:errors) > 0 && index(s:flaky, s:test) >= 0 + call add(s:messages, 'Flaky test failed, running it again') + let v:errors = [] + call RunTheTest(s:test) + endif if len(v:errors) > 0 let s:fail += 1 @@ -126,9 +142,6 @@ for s:test in sort(s:tests) let v:errors = [] endif - if exists("*TearDown") - call TearDown() - endif endfor if s:fail == 0 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -744,6 +744,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1477, +/**/ 1476, /**/ 1475,