aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec/lib/spec/mocks
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2011-02-23 12:06:34 +0000
committerLouise Crow <louise.crow@gmail.com>2011-02-23 12:06:34 +0000
commit4cd0de91754f07afd0afb58d137b3adcf5a07611 (patch)
tree1a16f0c5af85f5e7561012b027545183584e15b8 /vendor/plugins/rspec/lib/spec/mocks
parent44b78c1cd78607434b3666f5391ba68da647583f (diff)
Removing rspec and rspec-rails plugins in favour of updated gems.
Diffstat (limited to 'vendor/plugins/rspec/lib/spec/mocks')
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb51
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/argument_matchers.rb237
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/error_generator.rb92
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/errors.rb10
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/example_methods.rb69
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/extensions.rb1
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb3
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/framework.rb15
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb329
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/methods.rb89
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/mock.rb71
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/order_group.rb29
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/proxy.rb245
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/space.rb28
14 files changed, 0 insertions, 1269 deletions
diff --git a/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb b/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
deleted file mode 100644
index b51b7bae5..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module Spec
- module Mocks
-
- class ArgumentExpectation
- attr_reader :args
-
- def initialize(args, &block)
- @args = args
- @matchers_block = block
- @match_any_args = false
- @matchers = nil
-
- if ArgumentMatchers::AnyArgsMatcher === args.first
- @match_any_args = true
- elsif ArgumentMatchers::NoArgsMatcher === args.first
- @matchers = []
- else
- @matchers = args.collect {|arg| matcher_for(arg)}
- end
- end
-
- def matcher_for(arg)
- return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
- return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
- return ArgumentMatchers::EqualityProxy.new(arg)
- end
-
- def is_matcher?(obj)
- return obj.respond_to?(:matches?) & obj.respond_to?(:description)
- end
-
- def args_match?(given_args)
- match_any_args? || matchers_block_matches?(given_args) || matchers_match?(given_args)
- end
-
- def matchers_block_matches?(given_args)
- @matchers_block ? @matchers_block.call(*given_args) : nil
- end
-
- def matchers_match?(given_args)
- @matchers == given_args
- end
-
- def match_any_args?
- @match_any_args
- end
-
- end
-
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/argument_matchers.rb b/vendor/plugins/rspec/lib/spec/mocks/argument_matchers.rb
deleted file mode 100644
index f56551f21..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/argument_matchers.rb
+++ /dev/null
@@ -1,237 +0,0 @@
-module Spec
- module Mocks
-
- # ArgumentMatchers are messages that you can include in message
- # expectations to match arguments against a broader check than simple
- # equality.
- #
- # With the exception of any_args() and no_args(), the matchers
- # are all positional - they match against the arg in the given position.
- module ArgumentMatchers
-
- class AnyArgsMatcher
- def description
- "any args"
- end
- end
-
- class NoArgsMatcher
- def description
- "no args"
- end
- end
-
- class AnyArgMatcher
- def initialize(ignore)
- end
-
- def ==(other)
- true
- end
-
- def description
- "anything"
- end
- end
-
- class RegexpMatcher
- def initialize(regexp)
- @regexp = regexp
- end
-
- def ==(value)
- return value =~ @regexp unless value.is_a?(Regexp)
- value == @regexp
- end
- end
-
- class BooleanMatcher
- def initialize(ignore)
- end
-
- def ==(value)
- TrueClass === value || FalseClass === value
- end
- end
-
- class HashIncludingMatcher
- def initialize(expected)
- @expected = expected
- end
-
- def ==(actual)
- @expected.each do | key, value |
- return false unless actual.has_key?(key) && value == actual[key]
- end
- true
- rescue NoMethodError => ex
- return false
- end
-
- def description
- "hash_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
- end
- end
-
- class HashNotIncludingMatcher
- def initialize(expected)
- @expected = expected
- end
-
- def ==(actual)
- @expected.each do | key, value |
- return false if actual.has_key?(key) && value == actual[key]
- end
- true
- rescue NoMethodError => ex
- return false
- end
-
- def description
- "hash_not_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
- end
- end
-
- class DuckTypeMatcher
- def initialize(*methods_to_respond_to)
- @methods_to_respond_to = methods_to_respond_to
- end
-
- def ==(value)
- @methods_to_respond_to.all? { |sym| value.respond_to?(sym) }
- end
- end
-
- class MatcherMatcher
- def initialize(matcher)
- @matcher = matcher
- end
-
- def ==(value)
- @matcher.matches?(value)
- end
- end
-
- class EqualityProxy
- def initialize(given)
- @given = given
- end
-
- def ==(expected)
- @given == expected
- end
- end
-
- class InstanceOf
- def initialize(klass)
- @klass = klass
- end
-
- def ==(actual)
- actual.instance_of?(@klass)
- end
- end
-
- class KindOf
- def initialize(klass)
- @klass = klass
- end
-
- def ==(actual)
- actual.kind_of?(@klass)
- end
- end
-
- # :call-seq:
- # object.should_receive(:message).with(no_args())
- #
- # Passes if no arguments are passed along with the message
- def no_args
- NoArgsMatcher.new
- end
-
- # :call-seq:
- # object.should_receive(:message).with(any_args())
- #
- # Passes if object receives :message with any args at all. This is
- # really a more explicit variation of object.should_receive(:message)
- def any_args
- AnyArgsMatcher.new
- end
-
- # :call-seq:
- # object.should_receive(:message).with(anything())
- #
- # Passes as long as there is an argument.
- def anything
- AnyArgMatcher.new(nil)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(duck_type(:hello))
- # object.should_receive(:message).with(duck_type(:hello, :goodbye))
- #
- # Passes if the argument responds to the specified messages.
- #
- # == Examples
- #
- # array = []
- # display = mock('display')
- # display.should_receive(:present_names).with(duck_type(:length, :each))
- # => passes
- def duck_type(*args)
- DuckTypeMatcher.new(*args)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(boolean())
- #
- # Passes if the argument is boolean.
- def boolean
- BooleanMatcher.new(nil)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(hash_including(:key => val))
- # object.should_receive(:message).with(hash_including(:key))
- # object.should_receive(:message).with(hash_including(:key, :key2 => val2))
- # Passes if the argument is a hash that includes the specified key(s) or key/value
- # pairs. If the hash includes other keys, it will still pass.
- def hash_including(*args)
- HashIncludingMatcher.new(anythingize_lonely_keys(*args))
- end
-
- # :call-seq:
- # object.should_receive(:message).with(hash_not_including(:key => val))
- # object.should_receive(:message).with(hash_not_including(:key))
- # object.should_receive(:message).with(hash_not_including(:key, :key2 => :val2))
- #
- # Passes if the argument is a hash that doesn't include the specified key(s) or key/value
- def hash_not_including(*args)
- HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
- end
-
- # Passes if arg.instance_of?(klass)
- def instance_of(klass)
- InstanceOf.new(klass)
- end
-
- alias_method :an_instance_of, :instance_of
-
- # Passes if arg.kind_of?(klass)
- def kind_of(klass)
- KindOf.new(klass)
- end
-
- alias_method :a_kind_of, :kind_of
-
- private
-
- def anythingize_lonely_keys(*args)
- hash = args.last.class == Hash ? args.delete_at(-1) : {}
- args.each { | arg | hash[arg] = anything }
- hash
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb b/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb
deleted file mode 100644
index f63811fed..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-module Spec
- module Mocks
- class ErrorGenerator
- attr_writer :opts
-
- def initialize(target, name, options={})
- @declared_as = options[:__declared_as] || 'Mock'
- @target = target
- @name = name
- end
-
- def opts
- @opts ||= {}
- end
-
- def raise_unexpected_message_error(sym, *args)
- __raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- expected_args = format_args(*expectation.expected_args)
- actual_args = args.empty? ? "(no args)" : format_args(*args)
- __raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
- end
-
- def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
- __raise "#{intro} expected :#{sym}#{arg_message(*args)} #{count_message(expected_received_count)}, but received it #{count_message(actual_received_count)}"
- end
-
- def raise_out_of_order_error(sym)
- __raise "#{intro} received :#{sym} out of order"
- end
-
- def raise_block_failed_error(sym, detail)
- __raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
- end
-
- def raise_missing_block_error(args_to_yield)
- __raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
- end
-
- def raise_wrong_arity_error(args_to_yield, arity)
- __raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with arity of #{arity}"
- end
-
- private
-
- def intro
- if @name
- "#{@declared_as} #{@name.inspect}"
- elsif Mock === @target
- @declared_as
- elsif Class === @target
- "<#{@target.inspect} (class)>"
- elsif @target
- @target
- else
- "nil"
- end
- end
-
- def __raise(message)
- message = opts[:message] unless opts[:message].nil?
- Kernel::raise(Spec::Mocks::MockExpectationError, message)
- end
-
- def arg_message(*args)
- " with " + format_args(*args)
- end
-
- def format_args(*args)
- args.empty? ? "(no args)" : "(" + arg_list(*args) + ")"
- end
-
- def arg_list(*args)
- args.collect {|arg| arg.respond_to?(:description) ? arg.description : arg.inspect}.join(", ")
- end
-
- def count_message(count)
- return "at least #{pretty_print(count.abs)}" if count < 0
- return pretty_print(count)
- end
-
- def pretty_print(count)
- return "once" if count == 1
- return "twice" if count == 2
- return "#{count} times"
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/errors.rb b/vendor/plugins/rspec/lib/spec/mocks/errors.rb
deleted file mode 100644
index 560b66a93..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Mocks
- class MockExpectationError < Exception
- end
-
- class AmbiguousReturnError < StandardError
- end
- end
-end
-
diff --git a/vendor/plugins/rspec/lib/spec/mocks/example_methods.rb b/vendor/plugins/rspec/lib/spec/mocks/example_methods.rb
deleted file mode 100644
index f6c68ab6a..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/example_methods.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-module Spec
- module Mocks
- module ExampleMethods
- include Spec::Mocks::ArgumentMatchers
-
- # Shortcut for creating an instance of Spec::Mocks::Mock.
- #
- # +name+ is used for failure reporting, so you should use the
- # role that the double is playing in the example.
- #
- # +stubs_and_options+ lets you assign options and stub values
- # at the same time. The only option available is :null_object.
- # Anything else is treated as a stub value.
- #
- # == Examples
- #
- # thing = double("thing", :a => "A")
- # thing.a == "A" => true
- #
- # person = double("thing", :name => "Joe", :email => "joe@domain.com")
- # person.name => "Joe"
- # person.email => "joe@domain.com"
- def double(*args)
- __declare_double('Double', *args)
- end
-
- # Alias for double
- def mock(*args)
- __declare_double('Mock', *args)
- end
-
- # Alias for double
- def stub(*args)
- __declare_double('Stub', *args)
- end
-
- def __declare_double(declared_as, *args) # :nodoc:
- args << {} unless Hash === args.last
- args.last[:__declared_as] = declared_as
- Spec::Mocks::Mock.new(*args)
- end
-
- # DEPRECATED - use double('name').as_null_object instead
- #
- # Shortcut for creating a mock object that will return itself in response
- # to any message it receives that it hasn't been explicitly instructed
- # to respond to.
- def stub_everything(name = 'stub')
- Spec.warn(<<-WARNING)
-
-DEPRECATION: stub_everything('#{name}') is deprecated and will be removed
-from a future version of rspec. Please use double('#{name}').as_null_object
-(or stub('#{name}').as_null_object or mock('#{name}').as_null_object instead.
-
-WARNING
- mock(name, :null_object => true)
- end
-
- # Disables warning messages about expectations being set on nil.
- #
- # By default warning messages are issued when expectations are set on nil. This is to
- # prevent false-positives and to catch potential bugs early on.
- def allow_message_expectations_on_nil
- Proxy.allow_message_expectations_on_nil
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/extensions.rb b/vendor/plugins/rspec/lib/spec/mocks/extensions.rb
deleted file mode 100644
index 6fd51a272..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/extensions.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'spec/mocks/extensions/object'
diff --git a/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb b/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb
deleted file mode 100644
index 4b7531066..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class Object
- include Spec::Mocks::Methods
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/framework.rb b/vendor/plugins/rspec/lib/spec/mocks/framework.rb
deleted file mode 100644
index e25778655..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/framework.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# Require everything except the global extensions of class and object. This
-# supports wrapping rspec's mocking functionality without invading every
-# object in the system.
-
-require 'spec/mocks/methods'
-require 'spec/mocks/argument_matchers'
-require 'spec/mocks/example_methods'
-require 'spec/mocks/proxy'
-require 'spec/mocks/mock'
-require 'spec/mocks/argument_expectation'
-require 'spec/mocks/message_expectation'
-require 'spec/mocks/order_group'
-require 'spec/mocks/errors'
-require 'spec/mocks/error_generator'
-require 'spec/mocks/space'
diff --git a/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb b/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
deleted file mode 100644
index 8a8133f69..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
+++ /dev/null
@@ -1,329 +0,0 @@
-module Spec
- module Mocks
-
- class BaseExpectation
- attr_reader :sym
- attr_writer :expected_received_count, :method_block, :expected_from
- protected :expected_received_count=, :method_block=, :expected_from=
- attr_accessor :error_generator
- protected :error_generator, :error_generator=
-
- def initialize(error_generator, expectation_ordering, expected_from, sym, method_block, expected_received_count=1, opts={}, &implementation)
- @error_generator = error_generator
- @error_generator.opts = opts
- @expected_from = expected_from
- @sym = sym
- @method_block = method_block
- @actual_received_count = 0
- @expected_received_count = expected_received_count
- @args_expectation = ArgumentExpectation.new([ArgumentMatchers::AnyArgsMatcher.new])
- @consecutive = false
- @exception_to_raise = nil
- @symbol_to_throw = nil
- @order_group = expectation_ordering
- @at_least = nil
- @at_most = nil
- @args_to_yield = []
- @failed_fast = nil
- @args_to_yield_were_cloned = false
- @return_block = implementation
- end
-
- def build_child(expected_from, method_block, expected_received_count, opts={})
- child = clone
- child.expected_from = expected_from
- child.method_block = method_block
- child.expected_received_count = expected_received_count
- child.clear_actual_received_count!
- new_gen = error_generator.clone
- new_gen.opts = opts
- child.error_generator = new_gen
- child.clone_args_to_yield @args_to_yield
- child
- end
-
- def expected_args
- @args_expectation.args
- end
-
- def and_return(*values, &return_block)
- Kernel::raise AmbiguousReturnError unless @method_block.nil?
- case values.size
- when 0 then value = nil
- when 1 then value = values[0]
- else
- value = values
- @consecutive = true
- @expected_received_count = values.size if !ignoring_args? &&
- @expected_received_count < values.size
- end
- @return_block = block_given? ? return_block : lambda { value }
- end
-
- # :call-seq:
- # and_raise()
- # and_raise(Exception) #any exception class
- # and_raise(exception) #any exception object
- #
- # == Warning
- #
- # When you pass an exception class, the MessageExpectation will
- # raise an instance of it, creating it with +new+. If the exception
- # class initializer requires any parameters, you must pass in an
- # instance and not the class.
- def and_raise(exception=Exception)
- @exception_to_raise = exception
- end
-
- def and_throw(symbol)
- @symbol_to_throw = symbol
- end
-
- def and_yield(*args)
- if @args_to_yield_were_cloned
- @args_to_yield.clear
- @args_to_yield_were_cloned = false
- end
-
- @args_to_yield << args
- self
- end
-
- def matches(sym, args)
- @sym == sym and @args_expectation.args_match?(args)
- end
-
- def invoke(*args, &block)
- if @expected_received_count == 0
- @failed_fast = true
- @actual_received_count += 1
- @error_generator.raise_expectation_error @sym, @expected_received_count, @actual_received_count, *args
- end
-
- @order_group.handle_order_constraint self
-
- begin
- Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
- Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
-
-
- if !@method_block.nil?
- default_return_val = invoke_method_block(*args)
- elsif @args_to_yield.size > 0
- default_return_val = invoke_with_yield(&block)
- else
- default_return_val = nil
- end
-
- if @consecutive
- return invoke_consecutive_return_block(*args, &block)
- elsif @return_block
- return invoke_return_block(*args, &block)
- else
- return default_return_val
- end
- ensure
- @actual_received_count += 1
- end
- end
-
- def called_max_times?
- @expected_received_count != :any && @expected_received_count > 0 &&
- @actual_received_count >= @expected_received_count
- end
-
- def invoke_return_block(*args, &block)
- args << block unless block.nil?
- # Ruby 1.9 - when we set @return_block to return values
- # regardless of arguments, any arguments will result in
- # a "wrong number of arguments" error
- @return_block.arity == 0 ? @return_block.call : @return_block.call(*args)
- end
-
- protected
-
- def invoke_method_block(*args)
- begin
- @method_block.call(*args)
- rescue => detail
- @error_generator.raise_block_failed_error @sym, detail.message
- end
- end
-
- def invoke_with_yield(&block)
- if block.nil?
- @error_generator.raise_missing_block_error @args_to_yield
- end
- value = nil
- @args_to_yield.each do |args_to_yield_this_time|
- if block.arity > -1 && args_to_yield_this_time.length != block.arity
- @error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity
- end
- value = block.call(*args_to_yield_this_time)
- end
- value
- end
-
- def invoke_consecutive_return_block(*args, &block)
- value = invoke_return_block(*args, &block)
- index = [@actual_received_count, value.size-1].min
- value[index]
- end
-
- def clone_args_to_yield(args)
- @args_to_yield = args.clone
- @args_to_yield_were_cloned = true
- end
-
- def failed_fast?
- @failed_fast
- end
- end
-
- class MessageExpectation < BaseExpectation
-
- def matches_name?(sym)
- @sym == sym
- end
-
- def matches_name_but_not_args(sym, args)
- matches_name?(sym) and not @args_expectation.args_match?(args)
- end
-
- def verify_messages_received
- return if expected_messages_received? || failed_fast?
-
- generate_error
- rescue Spec::Mocks::MockExpectationError => error
- error.backtrace.insert(0, @expected_from)
- Kernel::raise error
- end
-
- def expected_messages_received?
- ignoring_args? || matches_exact_count? ||
- matches_at_least_count? || matches_at_most_count?
- end
-
- def ignoring_args?
- @expected_received_count == :any
- end
-
- def matches_at_least_count?
- @at_least && @actual_received_count >= @expected_received_count
- end
-
- def matches_at_most_count?
- @at_most && @actual_received_count <= @expected_received_count
- end
-
- def matches_exact_count?
- @expected_received_count == @actual_received_count
- end
-
- def similar_messages
- @similar_messages ||= []
- end
-
- def advise(args, block)
- similar_messages << args
- end
-
- def generate_error
- if similar_messages.empty?
- @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
- else
- @error_generator.raise_unexpected_message_args_error(self, *@similar_messages)
- end
- end
-
- def with(*args, &block)
- @args_expectation = ArgumentExpectation.new(args, &block)
- self
- end
-
- def exactly(n)
- set_expected_received_count :exactly, n
- self
- end
-
- def at_least(n)
- set_expected_received_count :at_least, n
- self
- end
-
- def at_most(n)
- set_expected_received_count :at_most, n
- self
- end
-
- def times(&block)
- @method_block = block if block
- self
- end
-
- def any_number_of_times(&block)
- @method_block = block if block
- @expected_received_count = :any
- self
- end
-
- def never
- @expected_received_count = 0
- self
- end
-
- def once(&block)
- @method_block = block if block
- @expected_received_count = 1
- self
- end
-
- def twice(&block)
- @method_block = block if block
- @expected_received_count = 2
- self
- end
-
- def ordered(&block)
- @method_block = block if block
- @order_group.register(self)
- @ordered = true
- self
- end
-
- def negative_expectation_for?(sym)
- return false
- end
-
- protected
- def set_expected_received_count(relativity, n)
- @at_least = (relativity == :at_least)
- @at_most = (relativity == :at_most)
- @expected_received_count = case n
- when Numeric
- n
- when :once
- 1
- when :twice
- 2
- end
- end
-
- def clear_actual_received_count!
- @actual_received_count = 0
- end
-
- end
-
- class NegativeMessageExpectation < MessageExpectation
- def initialize(message, expectation_ordering, expected_from, sym, method_block)
- super(message, expectation_ordering, expected_from, sym, method_block, 0)
- end
-
- def negative_expectation_for?(sym)
- return @sym == sym
- end
- end
-
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/methods.rb b/vendor/plugins/rspec/lib/spec/mocks/methods.rb
deleted file mode 100644
index 16dd6e842..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/methods.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-module Spec
- module Mocks
- module Methods
- def should_receive(sym, opts={}, &block)
- __mock_proxy.add_message_expectation(opts[:expected_from] || caller(1)[0], sym.to_sym, opts, &block)
- end
-
- def should_not_receive(sym, &block)
- __mock_proxy.add_negative_message_expectation(caller(1)[0], sym.to_sym, &block)
- end
-
- def stub!(sym_or_hash, opts={}, &block)
- if Hash === sym_or_hash
- sym_or_hash.each {|method, value| stub!(method).and_return value }
- else
- __mock_proxy.add_stub(caller(1)[0], sym_or_hash.to_sym, opts, &block)
- end
- end
-
- alias_method :stub, :stub!
-
- def unstub!(message)
- __mock_proxy.remove_stub(message)
- end
-
- alias_method :unstub, :unstub!
-
- # :call-seq:
- # object.stub_chain(:first, :second, :third).and_return(:this)
- #
- # Supports stubbing a chain of methods. Each argument represents
- # a method name to stub, and each one returns a proxy object that
- # can accept more stubs, until the last, which returns whatever
- # is passed to +and_return_.
- #
- # == Examples
- #
- # # with this in an example ...
- # article = double('article')
- # Article.stub_chain(:authored_by, :published, :recent).and_return([article])
- # # then this will return an Array with the article double in it:
- # Article.authored_by(params[:author_id]).published.recent
- def stub_chain(*methods)
- if methods.length > 1
- if matching_stub = __mock_proxy.find_matching_method_stub(methods[0])
- methods.shift
- matching_stub.invoke_return_block.stub_chain(*methods)
- else
- next_in_chain = Object.new
- stub!(methods.shift) {next_in_chain}
- next_in_chain.stub_chain(*methods)
- end
- else
- stub!(methods.shift)
- end
- end
-
- def received_message?(sym, *args, &block) #:nodoc:
- __mock_proxy.received_message?(sym.to_sym, *args, &block)
- end
-
- def rspec_verify #:nodoc:
- __mock_proxy.verify
- end
-
- def rspec_reset #:nodoc:
- __mock_proxy.reset
- end
-
- def as_null_object
- __mock_proxy.as_null_object
- end
-
- def null_object?
- __mock_proxy.null_object?
- end
-
- private
-
- def __mock_proxy
- if Mock === self
- @mock_proxy ||= Proxy.new(self, @name, @options)
- else
- @mock_proxy ||= Proxy.new(self)
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/mock.rb b/vendor/plugins/rspec/lib/spec/mocks/mock.rb
deleted file mode 100644
index 35a6c798e..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/mock.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Mocks
- class Mock
- include Methods
-
- # Creates a new mock with a +name+ (that will be used in error messages
- # only) == Options:
- # * <tt>:null_object</tt> - if true, the mock object acts as a forgiving
- # null object allowing any message to be sent to it.
- def initialize(name=nil, stubs_and_options={})
- if name.is_a?(Hash) && stubs_and_options.empty?
- stubs_and_options = name
- @name = nil
- else
- @name = name
- end
- @options = extract_options(stubs_and_options)
- assign_stubs(stubs_and_options)
- end
-
- # This allows for comparing the mock to other objects that proxy such as
- # ActiveRecords belongs_to proxy objects. By making the other object run
- # the comparison, we're sure the call gets delegated to the proxy
- # target.
- def ==(other)
- other == __mock_proxy
- end
-
- def inspect
- "#<#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}>"
- end
-
- def to_s
- inspect.gsub('<','[').gsub('>',']')
- end
-
- private
-
- def method_missing(sym, *args, &block)
- __mock_proxy.record_message_received(sym, args, block)
- begin
- return self if __mock_proxy.null_object?
- super(sym, *args, &block)
- rescue NameError
- __mock_proxy.raise_unexpected_message_error sym, *args
- end
- end
-
- def extract_options(stubs_and_options)
- options = {}
- extract_option(stubs_and_options, options, :null_object)
- extract_option(stubs_and_options, options, :__declared_as, 'Mock')
- options
- end
-
- def extract_option(source, target, key, default=nil)
- if source[key]
- target[key] = source.delete(key)
- elsif default
- target[key] = default
- end
- end
-
- def assign_stubs(stubs)
- stubs.each_pair do |message, response|
- stub!(message).and_return(response)
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/order_group.rb b/vendor/plugins/rspec/lib/spec/mocks/order_group.rb
deleted file mode 100644
index 9983207eb..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/order_group.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Spec
- module Mocks
- class OrderGroup
- def initialize error_generator
- @error_generator = error_generator
- @ordering = Array.new
- end
-
- def register(expectation)
- @ordering << expectation
- end
-
- def ready_for?(expectation)
- return @ordering.first == expectation
- end
-
- def consume
- @ordering.shift
- end
-
- def handle_order_constraint expectation
- return unless @ordering.include? expectation
- return consume if ready_for?(expectation)
- @error_generator.raise_out_of_order_error expectation.sym
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/proxy.rb b/vendor/plugins/rspec/lib/spec/mocks/proxy.rb
deleted file mode 100644
index acf72e0f3..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/proxy.rb
+++ /dev/null
@@ -1,245 +0,0 @@
-module Spec
- module Mocks
- class Proxy
- DEFAULT_OPTIONS = {
- :null_object => false,
- }
-
- @@warn_about_expectations_on_nil = true
-
- def self.allow_message_expectations_on_nil
- @@warn_about_expectations_on_nil = false
-
- # ensure nil.rspec_verify is called even if an expectation is not set in the example
- # otherwise the allowance would effect subsequent examples
- $rspec_mocks.add(nil) unless $rspec_mocks.nil?
- end
-
- def initialize(target, name=nil, options={})
- @target = target
- @name = name
- @error_generator = ErrorGenerator.new target, name, options
- @expectation_ordering = OrderGroup.new @error_generator
- @expectations = []
- @messages_received = []
- @stubs = []
- @proxied_methods = []
- @options = options ? DEFAULT_OPTIONS.dup.merge(options) : DEFAULT_OPTIONS
- @already_proxied_respond_to = false
- end
-
- def null_object?
- @options[:null_object]
- end
-
- def as_null_object
- @options[:null_object] = true
- @target
- end
-
- def add_message_expectation(expected_from, sym, opts={}, &block)
- __add sym
- warn_if_nil_class sym
- if existing_stub = @stubs.detect {|s| s.sym == sym }
- expectation = existing_stub.build_child(expected_from, block_given?? block : nil, 1, opts)
- else
- expectation = MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil, 1, opts)
- end
- @expectations << expectation
- @expectations.last
- end
-
- def add_negative_message_expectation(expected_from, sym, &block)
- __add sym
- warn_if_nil_class sym
- @expectations << NegativeMessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil)
- @expectations.last
- end
-
- def add_stub(expected_from, sym, opts={}, &implementation)
- __add sym
- @stubs.unshift MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, nil, :any, opts, &implementation)
- @stubs.first
- end
-
- def remove_stub(message)
- message = message.to_sym
-
- if stub_to_remove = @stubs.detect { |s| s.matches_name?(message) }
- reset_proxied_method(message)
- @stubs.delete(stub_to_remove)
- else
- raise MockExpectationError, "The method `#{message}` was not stubbed or was already unstubbed"
- end
- end
-
- def verify #:nodoc:
- verify_expectations
- ensure
- reset
- end
-
- def reset
- clear_expectations
- clear_stubs
- reset_proxied_methods
- clear_proxied_methods
- reset_nil_expectations_warning
- end
-
- def received_message?(sym, *args, &block)
- @messages_received.any? {|array| array == [sym, args, block]}
- end
-
- def has_negative_expectation?(sym)
- @expectations.detect {|expectation| expectation.negative_expectation_for?(sym)}
- end
-
- def record_message_received(sym, args, block)
- @messages_received << [sym, args, block]
- end
-
- def message_received(sym, *args, &block)
- expectation = find_matching_expectation(sym, *args)
- stub = find_matching_method_stub(sym, *args)
-
- if (stub && expectation && expectation.called_max_times?) || (stub && !expectation)
- if expectation = find_almost_matching_expectation(sym, *args)
- expectation.advise(args, block) unless expectation.expected_messages_received?
- end
- stub.invoke(*args, &block)
- elsif expectation
- expectation.invoke(*args, &block)
- elsif expectation = find_almost_matching_expectation(sym, *args)
- expectation.advise(args, block) if null_object? unless expectation.expected_messages_received?
- raise_unexpected_message_args_error(expectation, *args) unless (has_negative_expectation?(sym) or null_object?)
- else
- @target.__send__ :method_missing, sym, *args, &block
- end
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- @error_generator.raise_unexpected_message_args_error expectation, *args
- end
-
- def raise_unexpected_message_error(sym, *args)
- @error_generator.raise_unexpected_message_error sym, *args
- end
-
- def find_matching_method_stub(sym, *args)
- @stubs.find {|stub| stub.matches(sym, args)}
- end
-
- private
-
- def __add(sym)
- $rspec_mocks.add(@target) unless $rspec_mocks.nil?
- define_expected_method(sym)
- end
-
- def warn_if_nil_class(sym)
- if proxy_for_nil_class? & @@warn_about_expectations_on_nil
- Kernel.warn("An expectation of :#{sym} was set on nil. Called from #{caller[2]}. Use allow_message_expectations_on_nil to disable warnings.")
- end
- end
-
- def define_expected_method(sym)
- unless @proxied_methods.include?(sym)
- visibility_string = "#{visibility(sym)} :#{sym}"
- if target_responds_to?(sym)
- munged_sym = munge(sym)
- target_metaclass.instance_eval do
- alias_method munged_sym, sym if method_defined?(sym)
- end
- @proxied_methods << sym
- end
- target_metaclass.class_eval(<<-EOF, __FILE__, __LINE__)
- def #{sym}(*args, &block)
- __mock_proxy.message_received :#{sym}, *args, &block
- end
- #{visibility_string}
- EOF
- end
- end
-
- def target_responds_to?(sym)
- return @target.__send__(munge(:respond_to?),sym) if @already_proxied_respond_to
- return @already_proxied_respond_to = true if sym == :respond_to?
- return @target.respond_to?(sym, true)
- end
-
- def visibility(sym)
- if Mock === @target
- 'public'
- elsif target_metaclass.private_method_defined?(sym)
- 'private'
- elsif target_metaclass.protected_method_defined?(sym)
- 'protected'
- else
- 'public'
- end
- end
-
- def munge(sym)
- "proxied_by_rspec__#{sym}"
- end
-
- def clear_expectations
- @expectations.clear
- end
-
- def clear_stubs
- @stubs.clear
- end
-
- def clear_proxied_methods
- @proxied_methods.clear
- end
-
- def target_metaclass
- class << @target; self; end
- end
-
- def verify_expectations
- @expectations.each do |expectation|
- expectation.verify_messages_received
- end
- end
-
- def reset_proxied_methods
- @proxied_methods.each do |sym|
- reset_proxied_method(sym)
- end
- end
-
- def reset_proxied_method(sym)
- munged_sym = munge(sym)
- target_metaclass.instance_eval do
- remove_method sym
- if method_defined?(munged_sym)
- alias_method sym, munged_sym
- remove_method munged_sym
- end
- end
- end
-
- def proxy_for_nil_class?
- @target.nil?
- end
-
- def reset_nil_expectations_warning
- @@warn_about_expectations_on_nil = true if proxy_for_nil_class?
- end
-
- def find_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches(sym, args) && !expectation.called_max_times?} ||
- @expectations.find {|expectation| expectation.matches(sym, args)}
- end
-
- def find_almost_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches_name_but_not_args(sym, args)}
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/space.rb b/vendor/plugins/rspec/lib/spec/mocks/space.rb
deleted file mode 100644
index 3e13224c7..000000000
--- a/vendor/plugins/rspec/lib/spec/mocks/space.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Spec
- module Mocks
- class Space
- def add(obj)
- mocks << obj unless mocks.detect {|m| m.equal? obj}
- end
-
- def verify_all
- mocks.each do |mock|
- mock.rspec_verify
- end
- end
-
- def reset_all
- mocks.each do |mock|
- mock.rspec_reset
- end
- mocks.clear
- end
-
- private
-
- def mocks
- @mocks ||= []
- end
- end
- end
-end