patch 7.4.2240
Problem:    Tests using the sleep time can be flaky.
Solution:   Use reltime() if available. (Partly by Shane Harper)
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim
index 46777d1..5b9e5c4 100644
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -19,7 +19,11 @@
   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 @@
   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 @@
   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 @@
 
   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