]> granicus.if.org Git - vim/commitdiff
patch 7.4.2240 v7.4.2240
authorBram Moolenaar <Bram@vim.org>
Mon, 22 Aug 2016 19:40:29 +0000 (21:40 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 22 Aug 2016 19:40:29 +0000 (21:40 +0200)
Problem:    Tests using the sleep time can be flaky.
Solution:   Use reltime() if available. (Partly by Shane Harper)

src/testdir/shared.vim
src/testdir/test_timers.vim
src/version.c

index edc3c386a8dff4802c7f0d84c8f9a2b67f8c2f04..24b05bec6a1a16f69f740b227f283c2171087d88 100644 (file)
@@ -109,19 +109,31 @@ func s:kill_server(cmd)
 endfunc
 
 " Wait for up to a second for "expr" to become true.
-" Return time slept in milliseconds.
+" Return time slept in milliseconds.  With the +reltime feature this can be
+" more than the actual waiting time.  Without +reltime it can also be less.
 func WaitFor(expr)
-  let slept = 0
+  " using reltime() is more accurate, but not always available
+  if has('reltime')
+    let start = reltime()
+  else
+    let slept = 0
+  endif
   for i in range(100)
     try
       if eval(a:expr)
+       if has('reltime')
+         return float2nr(reltimefloat(reltime(start)) * 1000)
+       endif
        return slept
       endif
     catch
     endtry
-    let slept += 10
+    if !has('reltime')
+      let slept += 10
+    endif
     sleep 10m
   endfor
+  return 1000
 endfunc
 
 " Run Vim, using the "vimcmd" file and "-u NORC".
index 46777d1ea5993b59bc09357eb9cb59172ade1c30..5b9e5c48aaa8ed6af513494698f2c2497ba5d26f 100644 (file)
@@ -19,7 +19,11 @@ func Test_oneshot()
   let timer = timer_start(50, 'MyHandler')
   let slept = WaitFor('g:val == 1')
   call assert_equal(1, g:val)
-  call assert_inrange(30, 100, slept)
+  if has('reltime')
+    call assert_inrange(50, 100, slept)
+  else
+    call assert_inrange(20, 100, slept)
+  endif
 endfunc
 
 func Test_repeat_three()
@@ -27,7 +31,11 @@ func Test_repeat_three()
   let timer = timer_start(50, 'MyHandler', {'repeat': 3})
   let slept = WaitFor('g:val == 3')
   call assert_equal(3, g:val)
-  call assert_inrange(80, 200, slept)
+  if has('reltime')
+    call assert_inrange(150, 200, slept)
+  else
+    call assert_inrange(80, 200, slept)
+  endif
 endfunc
 
 func Test_repeat_many()
@@ -48,7 +56,11 @@ func Test_with_partial_callback()
   call timer_start(50, s:meow.bite)
   let slept = WaitFor('g:val == 1')
   call assert_equal(1, g:val)
-  call assert_inrange(30, 100, slept)
+  if has('reltime')
+    call assert_inrange(50, 100, slept)
+  else
+    call assert_inrange(20, 100, slept)
+  endif
 endfunc
 
 func Test_retain_partial()
@@ -109,7 +121,11 @@ func Test_paused()
 
   let slept = WaitFor('g:val == 1')
   call assert_equal(1, g:val)
-  call assert_inrange(0, 10, slept)
+  if has('reltime')
+    call assert_inrange(0, 30, slept)
+  else
+    call assert_inrange(0, 10, slept)
+  endif
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
index 1cd659f8619a15602c2388f58a476ab50110da8d..88ea46c8b29e3215151b331a90ecbec0e7abd59a 100644 (file)
@@ -763,6 +763,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2240,
 /**/
     2239,
 /**/