Sha256: de020680726712745cfec94c6e06c00bcd3d9b378083b5f6be5bf641c45614c4
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
module EventMachine module Ventually class Eventually autoload :MiniTest, 'em-ventually/eventually/minitest' autoload :RSpec, 'em-ventually/eventually/rspec' autoload :TestUnit, 'em-ventually/eventually/testunit' attr_reader :expectation def initialize(pool, runner, caller, expectation, opts, block) @pool, @runner, @caller, @expectation, @opts, @block = pool, runner, caller, expectation, opts, block @count = 0 @pool.push self @total_time = opts && opts[:total] || 1 @every_time = opts && opts[:every] || 0.1 run end def assert_equal(got) got == expectation end def formatted_message(msg) "#{msg} (#{@caller.filename}:#{@caller.line})" end def kill_timer @kill_timer ||= EM.add_timer(@total_time) { stop(formatted_message("Exceeded time, expected #{expectation.inspect}, last value was #{@last_val.inspect}")) } end def run if @pool.should_run?(self) kill_timer if @block.arity != 1 process_equality(@last_val = @block.call) else @block[proc { |val| @last_val = val process_equality(val) }] end else EM.add_timer(@every_time) { run } end end def process_equality(val) if assert_equal(val) stop else @count += 1 EM.add_timer(@every_time) { run } end end def stop(msg = nil) EM.cancel_timer @kill_timer @pool.complete(self) report(msg) if msg if @pool.empty? && EM.reactor_running? EM.stop end end def report(msg) STDERR << "Msg: #{msg}\n" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
em-ventually-0.0.1 | lib/em-ventually/eventually.rb |