diff src/testdir/test_timers.vim @ 12375:ab0d827151a1 v8.0.1067

patch 8.0.1067: try/catch in timer does not prevent it from being stopped commit https://github.com/vim/vim/commit/e723c42836d971180d1bf9f98916966c5543fff1 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 6 23:40:10 2017 +0200 patch 8.0.1067: try/catch in timer does not prevent it from being stopped Problem: Using try/catch in timer does not prevent it from being stopped. Solution: Reset the exception context and use did_emsg instead of called_emsg.
author Christian Brabandt <cb@256bit.org>
date Wed, 06 Sep 2017 23:45:04 +0200
parents 4e61b77cd96f
children 937356f8f8d6
line wrap: on
line diff
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -208,6 +208,24 @@ func Test_timer_errors()
   call assert_equal(3, g:call_count)
 endfunc
 
+func FuncWithCaughtError(timer)
+  let g:call_count += 1
+  try
+    doesnotexist
+  catch
+    " nop
+  endtry
+endfunc
+
+func Test_timer_catch_error()
+  let g:call_count = 0
+  let timer = timer_start(10, 'FuncWithCaughtError', {'repeat': 4})
+  " Timer will not be stopped.
+  call WaitFor('g:call_count == 4')
+  sleep 50m
+  call assert_equal(4, g:call_count)
+endfunc
+
 func FeedAndPeek(timer)
   call test_feedinput('a')
   call getchar(1)