diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-12-14 16:56:00 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-12-14 20:52:18 +0100 |
commit | 43ba7f4d987fc491de3378eef6b246a697c6e0b0 (patch) | |
tree | 6ddaa9431640ec0f4767449942b31697963ec8d3 /test/functional/helpers.lua | |
parent | 8c9cccbcb6bb5ee803f308916d5de1b949e0b13c (diff) | |
download | rneovim-43ba7f4d987fc491de3378eef6b246a697c6e0b0.tar.gz rneovim-43ba7f4d987fc491de3378eef6b246a697c6e0b0.tar.bz2 rneovim-43ba7f4d987fc491de3378eef6b246a697c6e0b0.zip |
eval.c: set_selfdict(): Fix invalid memory access.
Diffstat (limited to 'test/functional/helpers.lua')
-rw-r--r-- | test/functional/helpers.lua | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua index d1ab02f361..f3332cff4f 100644 --- a/test/functional/helpers.lua +++ b/test/functional/helpers.lua @@ -1,4 +1,5 @@ require('coxpcall') +local luv = require('luv') local lfs = require('lfs') local global_helpers = require('test.helpers') @@ -243,17 +244,24 @@ local function connect(file_or_address) return Session.new(stream) end --- Calls fn() until it returns without error, up to `max` times. -local function retry(fn, max) - local retries = max and (max - 1) or 2 - for _ = 1, retries do - local success = pcall(fn) - if success then - return +-- Calls fn() until it succeeds, up to `max` times or until `max_ms` +-- milliseconds have passed. +local function retry(max, max_ms, fn) + local tries = 1 + local timeout = (max_ms and max_ms > 0) and max_ms or 10000 + local start_time = luv.now() + while true do + local status, result = pcall(fn) + if status then + return result + end + if (max and tries >= max) or (luv.now() - start_time > timeout) then + break end + tries = tries + 1 end - -- pcall() is not used for the final attempt so failure can bubble up. - fn() + -- Do not use pcall() for the final attempt, let the failure bubble up. + return fn() end local function clear(...) |