module Webspicy::Support

Constants

SORL_OPTS

Public Class Methods

_sooner_or_later(&bl) click to toggle source
# File lib/webspicy/support.rb, line 21
def _sooner_or_later(&bl)
  bl.call
rescue Tester::Failure => ex
  ex
end
sooner_or_later(opts = nil, &bl) click to toggle source
# File lib/webspicy/support.rb, line 6
def sooner_or_later(opts = nil, &bl)
  opts = SORL_OPTS.merge(opts || {})
  left, wait_ms = opts[:max], opts[:wait]
  r = _sooner_or_later(&bl)
  until (r && !r.is_a?(Tester::Failure)) || left == 0
    sleep(wait_ms)
    wait_ms, left = wait_ms*2, left - 1
    r = _sooner_or_later(&bl)
  end
  raise r if r.is_a?(Tester::Failure)
  raise TimeoutError, "Timeout on sooner-or-later" if r.nil? && opts[:raise]
  r
end

Private Instance Methods

_sooner_or_later(&bl) click to toggle source
# File lib/webspicy/support.rb, line 21
def _sooner_or_later(&bl)
  bl.call
rescue Tester::Failure => ex
  ex
end
sooner_or_later(opts = nil, &bl) click to toggle source
# File lib/webspicy/support.rb, line 6
def sooner_or_later(opts = nil, &bl)
  opts = SORL_OPTS.merge(opts || {})
  left, wait_ms = opts[:max], opts[:wait]
  r = _sooner_or_later(&bl)
  until (r && !r.is_a?(Tester::Failure)) || left == 0
    sleep(wait_ms)
    wait_ms, left = wait_ms*2, left - 1
    r = _sooner_or_later(&bl)
  end
  raise r if r.is_a?(Tester::Failure)
  raise TimeoutError, "Timeout on sooner-or-later" if r.nil? && opts[:raise]
  r
end