class Rspec::Eventually::Eventually
Attributes
pause[R]
suppress_errors[R]
timeout[R]
Public Class Methods
new(target, custom_msg = nil)
click to toggle source
# File lib/rspec/eventually.rb, line 21 def initialize(target, custom_msg = nil) @target = target @tries = 0 @negative = false @custom_msg = custom_msg @timeout = Rspec::Eventually.timeout @pause = Rspec::Eventually.pause @suppress_errors = false end
Public Instance Methods
by_suppressing_errors()
click to toggle source
# File lib/rspec/eventually.rb, line 17 def by_suppressing_errors tap { @suppress_errors = true } end
does_not_match?()
click to toggle source
# File lib/rspec/eventually.rb, line 38 def does_not_match? raise 'Use eventually_not instead of expect(...).to_not' end
failure_message()
click to toggle source
# File lib/rspec/eventually.rb, line 42 def failure_message msg = @custom_msg || @target.failure_message "After #{@tries} tries, the last failure message was:\n#{msg}" end
matches?(expected_block)
click to toggle source
# File lib/rspec/eventually.rb, line 31 def matches?(expected_block) Timeout.timeout(timeout) { eventually_matches? expected_block } rescue Timeout::Error @tries.zero? && raise('Timeout before first evaluation, use a longer `eventually` timeout \ or shorter `eventually` pause') end
not()
click to toggle source
# File lib/rspec/eventually.rb, line 47 def not tap { @negative = true } end
pause_for(pause)
click to toggle source
# File lib/rspec/eventually.rb, line 59 def pause_for(pause) tap { @pause = pause } end
supports_block_expectations?()
click to toggle source
# File lib/rspec/eventually.rb, line 51 def supports_block_expectations? true end
within(timeout)
click to toggle source
# File lib/rspec/eventually.rb, line 55 def within(timeout) tap { @timeout = timeout } end
Private Instance Methods
eventually_matches?(expected_block)
click to toggle source
# File lib/rspec/eventually.rb, line 65 def eventually_matches?(expected_block) target_matches?(expected_block) || raise(FailedMatcherError) rescue StandardError => e raise if !e.is_a?(FailedMatcherError) && !suppress_errors sleep pause @tries += 1 retry end
target_matches?(expected_block)
click to toggle source
# File lib/rspec/eventually.rb, line 74 def target_matches?(expected_block) result = @target.matches? expected_block.call @negative ? !result : result end