To: vim_dev@googlegroups.com Subject: Patch 7.4.2240 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.2240 Problem: Tests using the sleep time can be flaky. Solution: Use reltime() if available. (Partly by Shane Harper) Files: src/testdir/shared.vim, src/testdir/test_timers.vim *** ../vim-7.4.2239/src/testdir/shared.vim 2016-08-08 22:34:10.294536818 +0200 --- src/testdir/shared.vim 2016-08-22 21:30:05.716370288 +0200 *************** *** 109,127 **** endfunc " Wait for up to a second for "expr" to become true. ! " Return time slept in milliseconds. func WaitFor(expr) ! let slept = 0 for i in range(100) try if eval(a:expr) return slept endif catch endtry ! let slept += 10 sleep 10m endfor endfunc " Run Vim, using the "vimcmd" file and "-u NORC". --- 109,139 ---- endfunc " Wait for up to a second for "expr" to become true. ! " 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) ! " 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 ! if !has('reltime') ! let slept += 10 ! endif sleep 10m endfor + return 1000 endfunc " Run Vim, using the "vimcmd" file and "-u NORC". *** ../vim-7.4.2239/src/testdir/test_timers.vim 2016-08-18 23:04:44.666592772 +0200 --- src/testdir/test_timers.vim 2016-08-22 21:36:44.248834978 +0200 *************** *** 19,25 **** let timer = timer_start(50, 'MyHandler') let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) ! call assert_inrange(30, 100, slept) endfunc func Test_repeat_three() --- 19,29 ---- let timer = timer_start(50, 'MyHandler') let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) ! if has('reltime') ! call assert_inrange(50, 100, slept) ! else ! call assert_inrange(20, 100, slept) ! endif endfunc func Test_repeat_three() *************** *** 27,33 **** 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) endfunc func Test_repeat_many() --- 31,41 ---- let timer = timer_start(50, 'MyHandler', {'repeat': 3}) let slept = WaitFor('g:val == 3') call assert_equal(3, g:val) ! if has('reltime') ! call assert_inrange(150, 200, slept) ! else ! call assert_inrange(80, 200, slept) ! endif endfunc func Test_repeat_many() *************** *** 48,54 **** 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) endfunc func Test_retain_partial() --- 56,66 ---- call timer_start(50, s:meow.bite) let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) ! if has('reltime') ! call assert_inrange(50, 100, slept) ! else ! call assert_inrange(20, 100, slept) ! endif endfunc func Test_retain_partial() *************** *** 109,115 **** let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) ! call assert_inrange(0, 10, slept) endfunc " vim: shiftwidth=2 sts=2 expandtab --- 121,131 ---- let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) ! if has('reltime') ! call assert_inrange(0, 30, slept) ! else ! call assert_inrange(0, 10, slept) ! endif endfunc " vim: shiftwidth=2 sts=2 expandtab *** ../vim-7.4.2239/src/version.c 2016-08-21 22:39:30.995567145 +0200 --- src/version.c 2016-08-22 21:31:39.283539901 +0200 *************** *** 765,766 **** --- 765,768 ---- { /* Add new patch number below this line */ + /**/ + 2240, /**/ -- hundred-and-one symptoms of being an internet addict: 54. You start tilting your head sideways to smile. :-) /// 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 ///