def run_against(context)
subject = @subject || context
description = @description ? "#{subject} #{@description}" : subject.to_s
klass = Class.new
klass.instance_eval do
context.class.instance_methods.each do |method|
define_method(method) { |*args| context.send(method, *args) } unless instance_methods.include?(method)
end
define_method(:it) { subject }
define_method(:description) { description }
include ::RSpec::Matchers
include Matchers
end
begin
trace description
klass.new.instance_eval &@block
rescue Exception=>error
raise error.exception("#{description}\n#{error}").tap { |wrapped| wrapped.set_backtrace(error.backtrace) }
end
end