lib/amqp-spec/rspec.rb in amqp-spec-0.1.13 vs lib/amqp-spec/rspec.rb in amqp-spec-0.2.0
- old
+ new
@@ -53,29 +53,46 @@
module SpecHelper
SpecTimeoutExceededError = Class.new(RuntimeError)
def self.included(example_group)
- ::Spec::Example::ExampleGroup.instance_exec do
- unless defined? default_spec_timeout
+# unless defined? self.default_timeout
+ if defined?(RSpec)
+ example_group.instance_exec do
+ metadata[:em_default_options] = {}
+ metadata[:em_default_timeout] = nil
+
+ def self.default_timeout(spec_timeout=nil)
+ metadata[:em_default_timeout] = spec_timeout if spec_timeout
+ metadata[:em_default_timeout]
+ end
+
+ def self.default_options(opts=nil)
+ metadata[:em_default_options] = opts if opts
+ metadata[:em_default_options]
+ end
+ end
+ else
+ ::Spec::Example::ExampleGroup.instance_exec do
@@_em_default_options = {}
@@_em_default_timeout = nil
- def self.default_spec_timeout(spec_timeout=nil)
+ def self.default_timeout(spec_timeout=nil)
@@_em_default_timeout = spec_timeout if spec_timeout
@@_em_default_timeout
end
- alias default_timeout default_spec_timeout
-
def self.default_options(opts=nil)
@@_em_default_options = opts if opts
@@_em_default_options
end
end
+
+# end
end
+
end
# Yields to given block inside EM.run and AMQP.start loops. This method takes any option that is
# also accepted by EventMachine::connect. Also, options for AMQP.start include:
# * :user => String (default ‘guest’) - The username as defined by the AMQP server.
@@ -86,16 +103,16 @@
#
# In addition to EM and AMQP options, :spec_timeout option (in seconds) is used to force spec to timeout
# if something goes wrong and EM/AMQP loop hangs for some reason. SpecTimeoutExceededError is raised.
#
def amqp opts={}, &block
- opts = @@_em_default_options.merge opts
+ opts = self.class.default_options.merge opts
begin
EM.run do
@_em_spec_with_amqp = true
@_em_spec_exception = nil
- spec_timeout = opts.delete(:spec_timeout) || @@_em_default_timeout
+ spec_timeout = opts.delete(:spec_timeout) || self.class.default_timeout
timeout(spec_timeout) if spec_timeout
@_em_spec_fiber = Fiber.new do
begin
AMQP.start_connection opts, &block
rescue Exception => @_em_spec_exception
@@ -115,11 +132,11 @@
end
end
# Yields to block inside EM loop, :spec_timeout option (in seconds) is used to force spec to timeout
# if something goes wrong and EM/AMQP loop hangs for some reason. SpecTimeoutExceededError is raised.
- def em(spec_timeout = @@_em_default_timeout, &block)
- spec_timeout = spec_timeout[:spec_timeout] || @@_em_default_timeout if spec_timeout.is_a?(Hash)
+ def em(spec_timeout = self.class.default_timeout, &block)
+ spec_timeout = spec_timeout[:spec_timeout] || self.class.default_timeout if spec_timeout.is_a?(Hash)
EM.run do
@_em_spec_with_amqp = false
@_em_spec_exception = nil
timeout(spec_timeout) if spec_timeout
@_em_spec_fiber = Fiber.new do