Module: Webspicy::Support

Defined in:
lib/webspicy/support.rb,
lib/webspicy/support/hooks.rb,
lib/webspicy/support/world.rb,
lib/webspicy/support/colorize.rb,
lib/webspicy/support/deep_merge.rb,
lib/webspicy/support/data_object.rb,
lib/webspicy/support/status_range.rb

Defined Under Namespace

Modules: Colorize, DataObject, Hooks Classes: DeepMerge, StatusRange, World

Constant Summary collapse

SORL_OPTS =
{ max: 5, wait: 0.05, raise: false }

Class Method Summary collapse

Class Method Details

._sooner_or_later(&bl) ⇒ Object



21
22
23
24
25
# 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) ⇒ Object

Raises:



6
7
8
9
10
11
12
13
14
15
16
17
18
# 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