let g:func_start = reltime()
endif
+" Invoked when a test takes too much time.
+func TestTimeout(id)
+ split test.log
+ call append(line('$'), '')
+ call append(line('$'), 'Test timed out: ' .. g:testfunc)
+ write
+ call add(v:errors, 'Test timed out: ' . g:testfunc)
+
+ cquit! 42
+endfunc
+
func RunTheTest(test)
let prefix = ''
if has('reltime')
endif
echoconsole prefix .. 'Executing ' .. a:test
+ if has('timers')
+ " No test should take longer than 30 seconds. If it takes longer we
+ " assume we are stuck and need to break out.
+ let test_timeout_timer = timer_start(30000, 'TestTimeout')
+ endif
+
" Avoid stopping at the "hit enter" prompt
set nomore
endtry
endif
+ if has('timers')
+ call timer_stop(test_timeout_timer)
+ endif
+
" Clear any autocommands and put back the catch-all for SwapExists.
au!
au SwapExists * call HandleSwapExists()