rspec-mocks 2.8.0 → 2.9.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ README.markdown
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ License.txt
@@ -0,0 +1,7 @@
1
+ --exclude features
2
+ --no-private
3
+ --markup markdown
4
+ lib/**/*.rb
5
+ -
6
+ Changelog.md
7
+ License.txt
@@ -0,0 +1,147 @@
1
+ ### 2.9.0.rc2 / 2012-03-12
2
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.8.0...v2.9.0.rc2)
3
+
4
+ Enhancements
5
+
6
+ * Support order constraints across objects (preethiramdev)
7
+
8
+ Bug fixes
9
+
10
+ * Allow a `as_null_object` to be passed to `with`
11
+ * Pass proc to block passed to stub (Aubrey Rhodes)
12
+ * Initialize child message expectation args to match any args (#109 -
13
+ preethiramdev)
14
+
15
+ ### 2.8.0 / 2012-01-04
16
+
17
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.8.0.rc2...v2.8.0)
18
+
19
+ No changes for this release. Just releasing with the other rspec gems.
20
+
21
+ ### 2.8.0.rc2 / 2011-12-19
22
+
23
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.8.0.rc1...v2.8.0.rc2)
24
+
25
+ No changes for this release. Just releasing with the other rspec gems.
26
+
27
+ ### 2.8.0.rc1 / 2011-11-06
28
+
29
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.7.0...v2.8.0.rc1)
30
+
31
+ Enhancements
32
+
33
+ * Eliminate Ruby warnings (Matijs van Zuijlen)
34
+
35
+ ### 2.7.0 / 2011-10-16
36
+
37
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.6.0...v2.7.0)
38
+
39
+ Enhancements
40
+
41
+ * Use `__send__` rather than `send` (alextk)
42
+ * Add support for `any_instance.stub_chain` (Sidu Ponnappa)
43
+ * Add support for `any_instance` argument matching based on `with` (Sidu
44
+ Ponnappa and Andy Lindeman)
45
+
46
+ Changes
47
+
48
+ * Check for `failure_message_for_should` or `failure_message` instead of
49
+ `description` to detect a matcher (Tibor Claassen)
50
+
51
+ Bug fixes
52
+
53
+ * pass a hash to `any_instance.stub`. (Justin Ko)
54
+ * allow `to_ary` to be called without raising `NoMethodError` (Mikhail
55
+ Dieterle)
56
+ * `any_instance` properly restores private methods (Sidu Ponnappa)
57
+
58
+ ### 2.6.0 / 2011-05-12
59
+
60
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.5.0...v2.6.0)
61
+
62
+ Enhancements
63
+
64
+ * Add support for `any_instance.stub` and `any_instance.should_receive` (Sidu
65
+ Ponnappa and Andy Lindeman)
66
+
67
+ Bug fixes
68
+
69
+ * fix bug in which multiple chains with shared messages ending in hashes failed
70
+ to return the correct value
71
+
72
+ ### 2.5.0 / 2011-02-05
73
+
74
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.4.0...v2.5.0)
75
+
76
+ Bug fixes
77
+
78
+ * message expectation counts now work in combination with a stub (Damian
79
+ Nurzynski)
80
+ * fix failure message when message received with incorrect args (Josep M.
81
+ Bach)
82
+
83
+ ### 2.4.0 / 2011-01-02
84
+
85
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.3.0...v2.4.0)
86
+
87
+ No functional changes in this release, which was made to align with the
88
+ rspec-core-2.4.0 release.
89
+
90
+ ### 2.3.0 / 2010-12-12
91
+
92
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.2.0...v2.3.0)
93
+
94
+ Bug fixes
95
+
96
+ * Fix our Marshal extension so that it does not interfere with objects that
97
+ have their own `@mock_proxy` instance variable. (Myron Marston)
98
+
99
+ ### 2.2.0 / 2010-11-28
100
+
101
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.1.0...v2.2.0)
102
+
103
+ Enhancements
104
+
105
+ * Added "rspec/mocks/standalone" for exploring the rspec-mocks in irb.
106
+
107
+ Bug fix
108
+
109
+ * Eliminate warning on splat args without parens (Gioele Barabucci)
110
+ * Fix bug where `obj.should_receive(:foo).with(stub.as_null_object)` would pass
111
+ with a false positive.
112
+
113
+ ### 2.1.0 / 2010-11-07
114
+
115
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.0.1...v2.1.0)
116
+
117
+ Bug fixes
118
+
119
+ * Fix serialization of stubbed object (Josep M Bach)
120
+
121
+ ### 2.0.0 / 2010-10-10
122
+
123
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.0.0.beta.22...v2.0.0)
124
+
125
+ ### 2.0.0.rc / 2010-10-05
126
+
127
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.0.0.beta.22...v2.0.0.rc)
128
+
129
+ Enhancements
130
+
131
+ * support passing a block to an expectation block (Nicolas Braem)
132
+ * `obj.should_receive(:msg) {|&block| ... }`
133
+
134
+ Bug fixes
135
+
136
+ * Fix YAML serialization of stub (Myron Marston)
137
+ * Fix rdoc rake task (Hans de Graaff)
138
+
139
+ ### 2.0.0.beta.22 / 2010-09-12
140
+
141
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.0.0.beta.20...v2.0.0.beta.22)
142
+
143
+ Bug fixes
144
+
145
+ * fixed regression that broke `obj.stub_chain(:a, :b => :c)`
146
+ * fixed regression that broke `obj.stub_chain(:a, :b) { :c }`
147
+ * `respond_to?` always returns true when using `as_null_object`
@@ -27,7 +27,6 @@ Feature: as_null_object
27
27
  end
28
28
 
29
29
  it "supports Array#flatten" do
30
- null_object = double('foo')
31
30
  [null_object].flatten.should eq([null_object])
32
31
  end
33
32
  end
@@ -1,4 +1,4 @@
1
1
  Then /^the example(?:s)? should(?: all)? pass$/ do
2
- Then %q{the output should contain "0 failures"}
3
- Then %q{the exit status should be 0}
2
+ step %q{the output should contain "0 failures"}
3
+ step %q{the exit status should be 0}
4
4
  end
@@ -3,13 +3,13 @@ module RSpec
3
3
  # @api private
4
4
  class ArgumentExpectation
5
5
  attr_reader :args
6
-
6
+
7
7
  def initialize(*args, &block)
8
8
  @args = args
9
9
  @block = args.empty? ? block : nil
10
10
  @match_any_args = false
11
11
  @matchers = nil
12
-
12
+
13
13
  case args.first
14
14
  when ArgumentMatchers::AnyArgsMatcher
15
15
  @match_any_args = true
@@ -19,34 +19,31 @@ module RSpec
19
19
  @matchers = args.collect {|arg| matcher_for(arg)}
20
20
  end
21
21
  end
22
-
22
+
23
23
  def matcher_for(arg)
24
24
  return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
25
25
  return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
26
26
  return ArgumentMatchers::EqualityProxy.new(arg)
27
27
  end
28
-
28
+
29
29
  def is_matcher?(obj)
30
- !null_object?(obj) & obj.respond_to?(:matches?) & [:failure_message_for_should, :failure_message].any? { |m| obj.respond_to?(m) }
30
+ !obj.null_object? & obj.respond_to?(:matches?) & [:failure_message_for_should, :failure_message].any? { |m| obj.respond_to?(m) }
31
31
  end
32
32
 
33
33
  def args_match?(*args)
34
34
  match_any_args? || block_passes?(*args) || matchers_match?(*args)
35
35
  end
36
-
36
+
37
37
  private
38
- def null_object?(obj)
39
- obj.respond_to?(:__rspec_double_acting_as_null_object?) && obj.__rspec_double_acting_as_null_object?
40
- end
41
-
38
+
42
39
  def block_passes?(*args)
43
40
  @block.call(*args) if @block
44
41
  end
45
-
42
+
46
43
  def matchers_match?(*args)
47
44
  @matchers == args
48
45
  end
49
-
46
+
50
47
  def match_any_args?
51
48
  @match_any_args
52
49
  end
@@ -87,7 +87,7 @@ module RSpec
87
87
  end
88
88
 
89
89
  def ==(value)
90
- @methods_to_respond_to.all? {|sym| value.respond_to?(sym)}
90
+ @methods_to_respond_to.all? {|message| value.respond_to?(message)}
91
91
  end
92
92
  end
93
93
 
@@ -16,37 +16,37 @@ module RSpec
16
16
  end
17
17
 
18
18
  # @private
19
- def raise_unexpected_message_error(sym, *args)
20
- __raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
19
+ def raise_unexpected_message_error(message, *args)
20
+ __raise "#{intro} received unexpected message :#{message}#{arg_message(*args)}"
21
21
  end
22
22
 
23
23
  # @private
24
24
  def raise_unexpected_message_args_error(expectation, *args)
25
25
  expected_args = format_args(*expectation.expected_args)
26
26
  actual_args = format_args(*args)
27
- __raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
27
+ __raise "#{intro} received #{expectation.message.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
28
28
  end
29
29
 
30
30
  # @private
31
31
  def raise_similar_message_args_error(expectation, *args)
32
32
  expected_args = format_args(*expectation.expected_args)
33
33
  actual_args = args.collect {|a| format_args(*a)}.join(", ")
34
- __raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
34
+ __raise "#{intro} received #{expectation.message.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
35
35
  end
36
36
 
37
37
  # @private
38
- def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
39
- __raise "(#{intro}).#{sym}#{format_args(*args)}\n expected: #{count_message(expected_received_count)}\n received: #{count_message(actual_received_count)}"
38
+ def raise_expectation_error(message, expected_received_count, actual_received_count, *args)
39
+ __raise "(#{intro}).#{message}#{format_args(*args)}\n expected: #{count_message(expected_received_count)}\n received: #{count_message(actual_received_count)}"
40
40
  end
41
41
 
42
42
  # @private
43
- def raise_out_of_order_error(sym)
44
- __raise "#{intro} received :#{sym} out of order"
43
+ def raise_out_of_order_error(message)
44
+ __raise "#{intro} received :#{message} out of order"
45
45
  end
46
46
 
47
47
  # @private
48
- def raise_block_failed_error(sym, detail)
49
- __raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
48
+ def raise_block_failed_error(message, detail)
49
+ __raise "#{intro} received :#{message} but passed block failed with: #{detail}"
50
50
  end
51
51
 
52
52
  # @private
@@ -12,7 +12,7 @@ if defined?(Psych) && Psych.respond_to?(:dump)
12
12
  begin
13
13
  dump_without_mocks(object, *args)
14
14
  ensure
15
- object.instance_variable_set(:@mock_proxy,mp)
15
+ object.instance_variable_set(:@mock_proxy, mp)
16
16
  end
17
17
  end
18
18
 
@@ -3,23 +3,23 @@ module RSpec
3
3
 
4
4
  class MessageExpectation
5
5
  # @private
6
- attr_reader :sym
7
- attr_writer :expected_received_count, :method_block, :expected_from
6
+ attr_reader :message
7
+ attr_writer :expected_received_count, :method_block, :expected_from, :argument_expectation
8
8
  protected :expected_received_count=, :method_block=, :expected_from=
9
9
  attr_accessor :error_generator
10
10
  protected :error_generator, :error_generator=
11
11
 
12
12
  # @private
13
- def initialize(error_generator, expectation_ordering, expected_from, sym, method_block, expected_received_count=1, opts={}, &implementation)
13
+ def initialize(error_generator, expectation_ordering, expected_from, message, method_block, expected_received_count=1, opts={}, &implementation)
14
14
  @error_generator = error_generator
15
15
  @error_generator.opts = opts
16
16
  @expected_from = expected_from
17
- @sym = sym
17
+ @message = message
18
18
  @method_block = method_block
19
19
  @return_block = nil
20
20
  @actual_received_count = 0
21
21
  @expected_received_count = expected_received_count
22
- @args_expectation = ArgumentExpectation.new(ArgumentMatchers::AnyArgsMatcher.new)
22
+ @argument_expectation = ArgumentExpectation.new(ArgumentMatchers::AnyArgsMatcher.new)
23
23
  @consecutive = false
24
24
  @exception_to_raise = nil
25
25
  @args_to_throw = []
@@ -45,12 +45,13 @@ module RSpec
45
45
  new_gen.opts = opts
46
46
  child.error_generator = new_gen
47
47
  child.clone_args_to_yield(*@args_to_yield)
48
+ child.argument_expectation = ArgumentExpectation.new(ArgumentMatchers::AnyArgsMatcher.new)
48
49
  child
49
50
  end
50
51
 
51
52
  # @private
52
53
  def expected_args
53
- @args_expectation.args
54
+ @argument_expectation.args
54
55
  end
55
56
 
56
57
  # @overload and_return(value)
@@ -163,8 +164,8 @@ module RSpec
163
164
  end
164
165
 
165
166
  # @private
166
- def matches?(sym, *args)
167
- @sym == sym and @args_expectation.args_match?(*args)
167
+ def matches?(message, *args)
168
+ @message == message and @argument_expectation.args_match?(*args)
168
169
  end
169
170
 
170
171
  # @private
@@ -172,13 +173,20 @@ module RSpec
172
173
  if @expected_received_count == 0
173
174
  @failed_fast = true
174
175
  @actual_received_count += 1
175
- @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *args)
176
+ @error_generator.raise_expectation_error(@message, @expected_received_count, @actual_received_count, *args)
176
177
  end
177
178
 
178
179
  @order_group.handle_order_constraint self
179
180
 
180
181
  begin
181
- Kernel::raise(@exception_to_raise) unless @exception_to_raise.nil?
182
+ begin
183
+ raise(@exception_to_raise) unless @exception_to_raise.nil?
184
+ rescue ArgumentError => e
185
+ raise e.exception(<<-MESSAGE)
186
+ 'and_raise' can only accept an Exception class if an instance can be constructed with no arguments.
187
+ #{@exception_to_raise.to_s}'s initialize method requires #{@exception_to_raise.instance_method(:initialize).arity} arguments, so you have to supply an instance instead.
188
+ MESSAGE
189
+ end
182
190
  Kernel::throw(*@args_to_throw) unless @args_to_throw.empty?
183
191
 
184
192
  default_return_val = if !@method_block.nil?
@@ -208,8 +216,8 @@ module RSpec
208
216
  end
209
217
 
210
218
  # @private
211
- def matches_name_but_not_args(sym, *args)
212
- @sym == sym and not @args_expectation.args_match?(*args)
219
+ def matches_name_but_not_args(message, *args)
220
+ @message == message and not @argument_expectation.args_match?(*args)
213
221
  end
214
222
 
215
223
  # @private
@@ -258,12 +266,16 @@ module RSpec
258
266
  # @private
259
267
  def generate_error
260
268
  if similar_messages.empty?
261
- @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
269
+ @error_generator.raise_expectation_error(@message, @expected_received_count, @actual_received_count, *@argument_expectation.args)
262
270
  else
263
271
  @error_generator.raise_similar_message_args_error(self, *@similar_messages)
264
272
  end
265
273
  end
266
274
 
275
+ def raise_out_of_order_error
276
+ @error_generator.raise_out_of_order_error @message
277
+ end
278
+
267
279
  # Constrains a stub or message expectation to invocations with specific
268
280
  # arguments.
269
281
  #
@@ -290,7 +302,7 @@ module RSpec
290
302
  # # => passes
291
303
  def with(*args, &block)
292
304
  @return_block = block if block_given? unless args.empty?
293
- @args_expectation = ArgumentExpectation.new(*args, &block)
305
+ @argument_expectation = ArgumentExpectation.new(*args, &block)
294
306
  self
295
307
  end
296
308
 
@@ -397,7 +409,7 @@ module RSpec
397
409
  end
398
410
 
399
411
  # @private
400
- def negative_expectation_for?(sym)
412
+ def negative_expectation_for?(message)
401
413
  return false
402
414
  end
403
415
 
@@ -417,7 +429,7 @@ module RSpec
417
429
  begin
418
430
  @method_block.call(*args, &block)
419
431
  rescue => detail
420
- @error_generator.raise_block_failed_error(@sym, detail.message)
432
+ @error_generator.raise_block_failed_error(@message, detail.message)
421
433
  end
422
434
  end
423
435
 
@@ -450,11 +462,7 @@ module RSpec
450
462
  end
451
463
 
452
464
  def invoke_return_block(*args, &block)
453
- args << block unless block.nil?
454
- # Ruby 1.9 - when we set @return_block to return values
455
- # regardless of arguments, any arguments will result in
456
- # a "wrong number of arguments" error
457
- @return_block.arity == 0 ? @return_block.call : @return_block.call(*args)
465
+ @return_block.arity == 0 ? @return_block.call(&block) : @return_block.call(*args, &block)
458
466
  end
459
467
 
460
468
  def clone_args_to_yield(*args)
@@ -468,15 +476,12 @@ module RSpec
468
476
 
469
477
  def set_expected_received_count(relativity, n)
470
478
  @at_least = (relativity == :at_least)
471
- @at_most = (relativity == :at_most)
472
- @exactly = (relativity == :exactly)
479
+ @at_most = (relativity == :at_most)
480
+ @exactly = (relativity == :exactly)
473
481
  @expected_received_count = case n
474
- when Numeric
475
- n
476
- when :once
477
- 1
478
- when :twice
479
- 2
482
+ when Numeric then n
483
+ when :once then 1
484
+ when :twice then 2
480
485
  end
481
486
  end
482
487
 
@@ -488,13 +493,13 @@ module RSpec
488
493
  # @private
489
494
  class NegativeMessageExpectation < MessageExpectation
490
495
  # @private
491
- def initialize(message, expectation_ordering, expected_from, sym, method_block)
492
- super(message, expectation_ordering, expected_from, sym, method_block, 0)
496
+ def initialize(error_generator, expectation_ordering, expected_from, message, method_block)
497
+ super(error_generator, expectation_ordering, expected_from, message, method_block, 0)
493
498
  end
494
499
 
495
500
  # @private
496
- def negative_expectation_for?(sym)
497
- return @sym == sym
501
+ def negative_expectation_for?(message)
502
+ return @message == message
498
503
  end
499
504
  end
500
505
  end
@@ -97,17 +97,18 @@ module RSpec
97
97
  # are declared, they'll work as expected. If not, the receiver is
98
98
  # returned.
99
99
  def as_null_object
100
+ @_null_object = true
100
101
  __mock_proxy.as_null_object
101
102
  end
102
103
 
103
104
  # Returns true if this object has received `as_null_object`
104
105
  def null_object?
105
- __mock_proxy.null_object?
106
+ defined?(@_null_object)
106
107
  end
107
108
 
108
109
  # @private
109
- def received_message?(sym, *args, &block)
110
- __mock_proxy.received_message?(sym.to_sym, *args, &block)
110
+ def received_message?(message, *args, &block)
111
+ __mock_proxy.received_message?(message, *args, &block)
111
112
  end
112
113
 
113
114
  # @private
@@ -37,19 +37,19 @@ module RSpec
37
37
  alias_method :to_str, :to_s
38
38
 
39
39
  # @private
40
- def respond_to?(sym, incl_private=false)
41
- __mock_proxy.null_object? && sym != :to_ary ? true : super
40
+ def respond_to?(message, incl_private=false)
41
+ __mock_proxy.null_object? && message != :to_ary ? true : super
42
42
  end
43
43
 
44
44
  private
45
45
 
46
- def method_missing(sym, *args, &block)
47
- raise NoMethodError if sym == :to_ary
48
- __mock_proxy.record_message_received(sym, *args, &block)
46
+ def method_missing(message, *args, &block)
47
+ raise NoMethodError if message == :to_ary
48
+ __mock_proxy.record_message_received(message, *args, &block)
49
49
  begin
50
50
  __mock_proxy.null_object? ? self : super
51
51
  rescue NameError
52
- __mock_proxy.raise_unexpected_message_error(sym, *args)
52
+ __mock_proxy.raise_unexpected_message_error(message, *args)
53
53
  end
54
54
  end
55
55
 
@@ -2,8 +2,7 @@ module RSpec
2
2
  module Mocks
3
3
  # @private
4
4
  class OrderGroup
5
- def initialize error_generator
6
- @error_generator = error_generator
5
+ def initialize
7
6
  @ordering = Array.new
8
7
  end
9
8
 
@@ -14,7 +13,7 @@ module RSpec
14
13
 
15
14
  # @private
16
15
  def ready_for?(expectation)
17
- return @ordering.first == expectation
16
+ @ordering.first == expectation
18
17
  end
19
18
 
20
19
  # @private
@@ -23,10 +22,18 @@ module RSpec
23
22
  end
24
23
 
25
24
  # @private
26
- def handle_order_constraint expectation
27
- return unless @ordering.include? expectation
25
+ def handle_order_constraint(expectation)
26
+ return unless @ordering.include?(expectation)
28
27
  return consume if ready_for?(expectation)
29
- @error_generator.raise_out_of_order_error expectation.sym
28
+ expectation.raise_out_of_order_error
29
+ end
30
+
31
+ def clear
32
+ @ordering.clear
33
+ end
34
+
35
+ def empty?
36
+ @ordering.empty?
30
37
  end
31
38
  end
32
39
  end
@@ -33,8 +33,8 @@ module RSpec
33
33
  @object = object
34
34
  @name = name
35
35
  @error_generator = ErrorGenerator.new object, name, options
36
- @expectation_ordering = OrderGroup.new @error_generator
37
- @messages_received = []
36
+ @expectation_ordering = RSpec::Mocks::space.expectation_ordering
37
+ @messages_received = []
38
38
  @options = options
39
39
  @already_proxied_respond_to = false
40
40
  @null_object = false
@@ -101,38 +101,38 @@ module RSpec
101
101
  end
102
102
 
103
103
  # @private
104
- def has_negative_expectation?(method_name)
105
- method_double[method_name].expectations.detect {|expectation| expectation.negative_expectation_for?(method_name)}
104
+ def has_negative_expectation?(message)
105
+ method_double[message].expectations.detect {|expectation| expectation.negative_expectation_for?(message)}
106
106
  end
107
107
 
108
108
  # @private
109
- def record_message_received(method_name, *args, &block)
110
- @messages_received << [method_name, args, block]
109
+ def record_message_received(message, *args, &block)
110
+ @messages_received << [message, args, block]
111
111
  end
112
112
 
113
113
  # @private
114
- def message_received(method_name, *args, &block)
115
- expectation = find_matching_expectation(method_name, *args)
116
- stub = find_matching_method_stub(method_name, *args)
114
+ def message_received(message, *args, &block)
115
+ expectation = find_matching_expectation(message, *args)
116
+ stub = find_matching_method_stub(message, *args)
117
117
 
118
118
  if (stub && expectation && expectation.called_max_times?) || (stub && !expectation)
119
119
  expectation.increase_actual_received_count! if expectation && expectation.actual_received_count_matters?
120
- if expectation = find_almost_matching_expectation(method_name, *args)
120
+ if expectation = find_almost_matching_expectation(message, *args)
121
121
  expectation.advise(*args) unless expectation.expected_messages_received?
122
122
  end
123
123
  stub.invoke(*args, &block)
124
124
  elsif expectation
125
125
  expectation.invoke(*args, &block)
126
- elsif expectation = find_almost_matching_expectation(method_name, *args)
126
+ elsif expectation = find_almost_matching_expectation(message, *args)
127
127
  expectation.advise(*args) if null_object? unless expectation.expected_messages_received?
128
- raise_unexpected_message_args_error(expectation, *args) unless (has_negative_expectation?(method_name) or null_object?)
129
- elsif stub = find_almost_matching_stub(method_name, *args)
128
+ raise_unexpected_message_args_error(expectation, *args) unless (has_negative_expectation?(message) or null_object?)
129
+ elsif stub = find_almost_matching_stub(message, *args)
130
130
  stub.advise(*args)
131
131
  raise_unexpected_message_args_error(stub, *args)
132
132
  elsif @object.is_a?(Class)
133
- @object.superclass.__send__(method_name, *args, &block)
133
+ @object.superclass.__send__(message, *args, &block)
134
134
  else
135
- @object.__send__(:method_missing, method_name, *args, &block)
135
+ @object.__send__(:method_missing, message, *args, &block)
136
136
  end
137
137
  end
138
138
 
@@ -8,6 +8,8 @@ module RSpec
8
8
  # @private
9
9
  def self.fix_for(object)
10
10
  object.extend(YAML) if defined?(::YAML)
11
+ rescue TypeError
12
+ # Can't extend Fixnums, Symbols, true, false, or nil
11
13
  end
12
14
 
13
15
  # @private
@@ -3,26 +3,31 @@ module RSpec
3
3
  # @api private
4
4
  class Space
5
5
  def add(obj)
6
- mocks << obj unless mocks.detect {|m| m.equal? obj}
6
+ receivers << obj unless receivers.detect {|m| m.equal? obj}
7
7
  end
8
8
 
9
9
  def verify_all
10
- mocks.each do |mock|
10
+ receivers.each do |mock|
11
11
  mock.rspec_verify
12
12
  end
13
13
  end
14
14
 
15
15
  def reset_all
16
- mocks.each do |mock|
16
+ receivers.each do |mock|
17
17
  mock.rspec_reset
18
18
  end
19
- mocks.clear
19
+ receivers.clear
20
+ expectation_ordering.clear
20
21
  end
21
-
22
+
23
+ def expectation_ordering
24
+ @expectation_ordering ||= OrderGroup.new
25
+ end
26
+
22
27
  private
23
28
 
24
- def mocks
25
- @mocks ||= []
29
+ def receivers
30
+ @receivers ||= []
26
31
  end
27
32
  end
28
33
  end
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Mocks
3
3
  module Version
4
- STRING = '2.8.0'
4
+ STRING = '2.9.0.rc2'
5
5
  end
6
6
  end
7
7
  end
@@ -769,14 +769,14 @@ module RSpec
769
769
 
770
770
  it "adds an class to the current space when #any_instance is invoked" do
771
771
  klass.any_instance
772
- RSpec::Mocks::space.send(:mocks).should include(klass)
772
+ RSpec::Mocks::space.send(:receivers).should include(klass)
773
773
  end
774
774
 
775
775
  it "adds an instance to the current space when stubbed method is invoked" do
776
776
  klass.any_instance.stub(:foo)
777
777
  instance = klass.new
778
778
  instance.foo
779
- RSpec::Mocks::space.send(:mocks).should include(instance)
779
+ RSpec::Mocks::space.send(:receivers).should include(instance)
780
780
  end
781
781
  end
782
782
 
@@ -3,20 +3,18 @@ require 'spec_helper'
3
3
  module RSpec
4
4
  module Mocks
5
5
  describe ArgumentExpectation do
6
-
6
+
7
7
  it "considers an object that responds to #matches? and #failure_message_for_should to be a matcher" do
8
8
  argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
9
9
  obj = double("matcher")
10
- obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
11
10
  obj.stub(:respond_to?).with(:matches?).and_return(true)
12
11
  obj.stub(:respond_to?).with(:failure_message_for_should).and_return(true)
13
12
  argument_expecatation.is_matcher?(obj).should be_true
14
13
  end
15
-
14
+
16
15
  it "considers an object that responds to #matches? and #failure_message to be a matcher for backward compatibility" do
17
16
  argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
18
17
  obj = double("matcher")
19
- obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
20
18
  obj.stub(:respond_to?).with(:matches?).and_return(true)
21
19
  obj.stub(:respond_to?).with(:failure_message_for_should).and_return(false)
22
20
  obj.stub(:respond_to?).with(:failure_message).and_return(true)
@@ -26,7 +24,6 @@ module RSpec
26
24
  it "does NOT consider an object that only responds to #matches? to be a matcher" do
27
25
  argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
28
26
  obj = double("matcher")
29
- obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
30
27
  obj.stub(:respond_to?).with(:matches?).and_return(true)
31
28
  obj.stub(:respond_to?).with(:failure_message_for_should).and_return(false)
32
29
  obj.stub(:respond_to?).with(:failure_message).and_return(false)
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  class LiarLiarPantsOnFire
4
- def respond_to?(sym, incl_private=false)
4
+ def respond_to?(message, incl_private=false)
5
5
  true
6
6
  end
7
7
 
8
- def self.respond_to?(sym, incl_private=false)
8
+ def self.respond_to?(message, incl_private=false)
9
9
  true
10
10
  end
11
11
  end
@@ -1,16 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "An object where respond_to? is true and does not have method" do
4
- # When should_receive(:sym) is sent to any object, the Proxy sends
5
- # respond_to?(:sym) to that object to see if the method should be proxied.
4
+ # When should_receive(message) is sent to any object, the Proxy sends
5
+ # respond_to?(message) to that object to see if the method should be proxied.
6
6
  #
7
7
  # If respond_to? itself is proxied, then when the Proxy sends respond_to?
8
8
  # to the object, the proxy is invoked and responds yes (if so set in the spec).
9
- # When the object does NOT actually respond to :sym, an exception is thrown
9
+ # When the object does NOT actually respond to `message`, an exception is thrown
10
10
  # when trying to proxy it.
11
11
  #
12
- # The fix was to keep track of whether :respond_to? had been proxied and, if
13
- # so, call the munged copy of :respond_to? on the object.
12
+ # The fix was to keep track of whether `respond_to?` had been proxied and, if
13
+ # so, call the munged copy of `respond_to?` on the object.
14
14
 
15
15
  it "does not raise an exception for Object" do
16
16
  obj = Object.new
@@ -4,34 +4,30 @@ module RSpec
4
4
  module Mocks
5
5
 
6
6
  describe "ordering" do
7
+ before { @double = double("test double") }
8
+ after { @double.rspec_reset }
7
9
 
8
- before do
9
- @double = double("test double")
10
- end
11
-
12
- after do
13
- @double.rspec_reset
14
- end
15
-
16
- it "passes two calls in order" do
17
- @double.should_receive(:one).ordered
18
- @double.should_receive(:two).ordered
19
- @double.one
20
- @double.two
21
- @double.rspec_verify
22
- end
23
-
24
- it "passes three calls in order" do
10
+ it "passes when messages are received in order" do
25
11
  @double.should_receive(:one).ordered
26
12
  @double.should_receive(:two).ordered
27
13
  @double.should_receive(:three).ordered
28
14
  @double.one
29
15
  @double.two
30
16
  @double.three
31
- @double.rspec_verify
32
17
  end
33
18
 
34
- it "fails if second call comes first" do
19
+ it "passes when messages are received in order across objects" do
20
+ a = double("a")
21
+ b = double("b")
22
+ a.should_receive(:one).ordered
23
+ b.should_receive(:two).ordered
24
+ a.should_receive(:three).ordered
25
+ a.one
26
+ b.two
27
+ a.three
28
+ end
29
+
30
+ it "fails when messages are received out of order (2nd message 1st)" do
35
31
  @double.should_receive(:one).ordered
36
32
  @double.should_receive(:two).ordered
37
33
  lambda do
@@ -39,7 +35,7 @@ module RSpec
39
35
  end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :two out of order")
40
36
  end
41
37
 
42
- it "fails if third call comes first" do
38
+ it "fails when messages are received out of order (3rd message 1st)" do
43
39
  @double.should_receive(:one).ordered
44
40
  @double.should_receive(:two).ordered
45
41
  @double.should_receive(:three).ordered
@@ -48,8 +44,8 @@ module RSpec
48
44
  @double.three
49
45
  end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
50
46
  end
51
-
52
- it "fails if third call comes second" do
47
+
48
+ it "fails when messages are received out of order (3rd message 2nd)" do
53
49
  @double.should_receive(:one).ordered
54
50
  @double.should_receive(:two).ordered
55
51
  @double.should_receive(:three).ordered
@@ -59,7 +55,21 @@ module RSpec
59
55
  end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
60
56
  end
61
57
 
62
- it "ignores order of non ordered calls" do
58
+ it "fails when messages are out of order across objects" do
59
+ a = double("test double")
60
+ b = double("another test double")
61
+ a.should_receive(:one).ordered
62
+ b.should_receive(:two).ordered
63
+ a.should_receive(:three).ordered
64
+ a.one
65
+ lambda do
66
+ a.three
67
+ end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
68
+ a.rspec_reset
69
+ b.rspec_reset
70
+ end
71
+
72
+ it "ignores order of non ordered messages" do
63
73
  @double.should_receive(:ignored_0)
64
74
  @double.should_receive(:ordered_1).ordered
65
75
  @double.should_receive(:ignored_1)
@@ -78,17 +88,16 @@ module RSpec
78
88
  @double.ignored_1
79
89
  @double.rspec_verify
80
90
  end
81
-
82
- it "passes when duplicates exist" do
91
+
92
+ it "supports duplicate messages" do
83
93
  @double.should_receive(:a).ordered
84
94
  @double.should_receive(:b).ordered
85
95
  @double.should_receive(:a).ordered
86
-
96
+
87
97
  @double.a
88
98
  @double.b
89
99
  @double.a
90
100
  end
91
-
92
101
  end
93
102
  end
94
103
  end
@@ -40,7 +40,11 @@ module RSpec
40
40
  it "clears internal mocks on reset_all" do
41
41
  @space.add(double("mock"))
42
42
  @space.reset_all
43
- @space.instance_eval { mocks.empty? }.should be_true
43
+ @space.instance_eval { receivers.empty? }.should be_true
44
+ end
45
+ it "resets the ordering" do
46
+ @space.reset_all
47
+ @space.expectation_ordering.should be_empty
44
48
  end
45
49
  it "only adds an instance once" do
46
50
  @space.add(m1 = double("mock1"))
@@ -8,7 +8,7 @@ module RSpec
8
8
  end
9
9
 
10
10
  treats_method_missing_as_private :subject => RSpec::Mocks::Mock.new, :noop => false
11
-
11
+
12
12
  after(:each) do
13
13
  @mock.rspec_reset
14
14
  end
@@ -54,7 +54,7 @@ module RSpec
54
54
  @mock.not_expected
55
55
  violated
56
56
  }.to raise_error(
57
- RSpec::Mocks::MockExpectationError,
57
+ RSpec::Mocks::MockExpectationError,
58
58
  %Q|(Double "test double").not_expected(no args)\n expected: 0 times\n received: 1 time|
59
59
  )
60
60
  end
@@ -65,7 +65,7 @@ module RSpec
65
65
  @mock.not_expected("unexpected text")
66
66
  violated
67
67
  }.to raise_error(
68
- RSpec::Mocks::MockExpectationError,
68
+ RSpec::Mocks::MockExpectationError,
69
69
  %Q|(Double "test double").not_expected("unexpected text")\n expected: 0 times\n received: 1 time|
70
70
  )
71
71
  end
@@ -137,19 +137,19 @@ module RSpec
137
137
  @mock.rspec_verify
138
138
  }.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
139
139
  end
140
-
140
+
141
141
  describe 'with a method that has a default argument' do
142
142
  it "raises an exception if the arguments don't match when the method is called, correctly reporting the offending arguments" do
143
143
  def @mock.method_with_default_argument(arg={}); end
144
144
  @mock.should_receive(:method_with_default_argument).with({})
145
-
145
+
146
146
  expect {
147
147
  @mock.method_with_default_argument(nil)
148
148
  @mock.rspec_verify
149
149
  }.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :method_with_default_argument with unexpected arguments\n expected: ({})\n got: (nil)")
150
150
  end
151
151
  end
152
-
152
+
153
153
  it "fails if unexpected method called" do
154
154
  lambda {
155
155
  @mock.something("a","b","c")
@@ -174,41 +174,42 @@ module RSpec
174
174
  }.to raise_error(RSpec::Mocks::MockExpectationError, /Double \"test double\" received :something but passed block failed with: expected false to be true/)
175
175
  end
176
176
 
177
- it "passes block to expectation block", :ruby => '> 1.8.6' do
178
- a = nil
177
+ it "passes proc to expectation block without an argument", :ruby => '> 1.8.6' do
179
178
  # We eval this because Ruby 1.8.6's syntax parser barfs on { |&block| ... }
180
179
  # and prevents the entire spec suite from running.
181
- eval("@mock.should_receive(:something) { |&block| a = block }")
182
- b = lambda { }
183
- @mock.something(&b)
184
- a.should eq b
185
- @mock.rspec_verify
180
+ eval("@mock.should_receive(:foo) {|&block| block.call.should eq(:bar)}")
181
+ @mock.foo { :bar }
186
182
  end
187
183
 
188
- it "fails right away when method defined as never is received" do
189
- @mock.should_receive(:not_expected).never
190
- expect { @mock.not_expected }.to raise_error(
191
- RSpec::Mocks::MockExpectationError,
192
- %Q|(Double "test double").not_expected(no args)\n expected: 0 times\n received: 1 time|
193
- )
184
+ it "passes proc to expectation block with an argument", :ruby => '> 1.8.6' do
185
+ eval("@mock.should_receive(:foo) {|arg, &block| block.call.should eq(:bar)}")
186
+ @mock.foo(:arg) { :bar }
194
187
  end
195
188
 
196
- it "eventually fails when method defined as never is received" do
189
+ it "passes proc to stub block without an argurment", :ruby => '>1.8.6' do
190
+ eval("@mock.stub(:foo) {|&block| block.call.should eq(:bar)}")
191
+ @mock.foo { :bar }
192
+ end
193
+
194
+ it "passes proc to stub block with an argument", :ruby => '> 1.8.6' do
195
+ eval("@mock.stub(:foo) {|arg, &block| block.call.should eq(:bar)}")
196
+ @mock.foo(:arg) { :bar }
197
+ end
198
+
199
+ it "fails right away when method defined as never is received" do
197
200
  @mock.should_receive(:not_expected).never
198
- expect { @mock.not_expected }.to raise_error(
199
- RSpec::Mocks::MockExpectationError,
200
- %Q|(Double "test double").not_expected(no args)\n expected: 0 times\n received: 1 time|
201
+ expect { @mock.not_expected }.
202
+ to raise_error(RSpec::Mocks::MockExpectationError,
203
+ %Q|(Double "test double").not_expected(no args)\n expected: 0 times\n received: 1 time|
201
204
  )
202
205
  end
203
206
 
204
207
  it "raises when told to" do
205
208
  @mock.should_receive(:something).and_raise(RuntimeError)
206
- lambda do
207
- @mock.something
208
- end.should raise_error(RuntimeError)
209
+ expect { @mock.something }.to raise_error(RuntimeError)
209
210
  end
210
211
 
211
- it "raises passed an Exception instance" do
212
+ it "raises instance of submitted Exception" do
212
213
  error = RuntimeError.new("error message")
213
214
  @mock.should_receive(:something).and_raise(error)
214
215
  lambda {
@@ -216,7 +217,19 @@ module RSpec
216
217
  }.should raise_error(RuntimeError, "error message")
217
218
  end
218
219
 
219
- it "raises RuntimeError with passed message" do
220
+ it "fails with helpful message if submitted Exception requires constructor arguments" do
221
+ class ErrorWithNonZeroArgConstructor < RuntimeError
222
+ def initialize(i_take_an_argument)
223
+ end
224
+ end
225
+
226
+ @mock.stub(:something).and_raise(ErrorWithNonZeroArgConstructor)
227
+ lambda {
228
+ @mock.something
229
+ }.should raise_error(ArgumentError, /^'and_raise' can only accept an Exception class if an instance/)
230
+ end
231
+
232
+ it "raises RuntimeError with submitted message" do
220
233
  @mock.should_receive(:something).and_raise("error message")
221
234
  lambda {
222
235
  @mock.something
@@ -615,7 +628,7 @@ module RSpec
615
628
  mock = double()
616
629
  expect {mock.foo}.to raise_error(/Double received/)
617
630
  end
618
-
631
+
619
632
  it "does respond to initially stubbed methods" do
620
633
  double = double(:foo => "woo", :bar => "car")
621
634
  double.foo.should eq "woo"
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'yaml'
3
2
 
4
3
  module RSpec
5
4
  module Mocks
@@ -1,26 +1,47 @@
1
1
  require 'spec_helper'
2
2
 
3
- module RSpec
4
- module Mocks
5
- describe "Example with stubbed and then called message" do
6
- it "fails if the message is expected and then subsequently not called again" do
7
- double = double("mock", :msg => nil)
8
- double.msg
9
- double.should_receive(:msg)
10
- lambda { double.rspec_verify }.should raise_error(RSpec::Mocks::MockExpectationError)
11
- end
3
+ describe "expection set on previously stubbed method" do
4
+ it "fails if message is not received after expectation is set" do
5
+ double = double(:msg => nil)
6
+ double.msg
7
+ double.should_receive(:msg)
8
+ lambda { double.rspec_verify }.should raise_error(RSpec::Mocks::MockExpectationError)
9
+ end
10
+
11
+ it "outputs arguments of similar calls" do
12
+ double = double('double', :foo => true)
13
+ double.should_receive(:foo).with('first')
14
+ double.foo('second')
15
+ double.foo('third')
16
+ lambda do
17
+ double.rspec_verify
18
+ end.should raise_error(%Q|Double "double" received :foo with unexpected arguments\n expected: ("first")\n got: ("second"), ("third")|)
19
+ double.rspec_reset
20
+ end
21
+
22
+ context "with argument constraint on stub" do
23
+ it "matches any args if no arg constraint set on expectation" do
24
+ double = double("mock")
25
+ double.stub(:foo).with(3).and_return("stub")
26
+ double.should_receive(:foo).at_least(:once).and_return("expectation")
27
+ double.foo
28
+ double.rspec_verify
29
+ end
30
+
31
+ it "matches specific args set on expectation" do
32
+ double = double("mock")
33
+ double.stub(:foo).with(3).and_return("stub")
34
+ double.should_receive(:foo).at_least(:once).with(4).and_return("expectation")
35
+ double.foo(4)
36
+ double.rspec_verify
37
+ end
12
38
 
13
- it "outputs arguments of all similar calls" do
14
- double = double('double', :foo => true)
15
- double.should_receive(:foo).with('first')
16
- double.foo('second')
17
- double.foo('third')
18
- lambda do
19
- double.rspec_verify
20
- end.should raise_error(%Q|Double "double" received :foo with unexpected arguments\n expected: ("first")\n got: ("second"), ("third")|)
21
- double.rspec_reset
22
- end
39
+ it "fails if expectation's arg constraint is not met" do
40
+ double = double("mock")
41
+ double.stub(:foo).with(3).and_return("stub")
42
+ double.should_receive(:foo).at_least(:once).with(4).and_return("expectation")
43
+ double.foo(3)
44
+ expect { double.rspec_verify }.to raise_error(/expected: \(4\)\s+got: \(3\)/)
23
45
  end
24
-
25
46
  end
26
47
  end
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-mocks
3
3
  version: !ruby/object:Gem::Version
4
- hash: 47
5
- prerelease:
4
+ hash: 85566451
5
+ prerelease: 6
6
6
  segments:
7
7
  - 2
8
- - 8
8
+ - 9
9
9
  - 0
10
- version: 2.8.0
10
+ - rc
11
+ - 2
12
+ version: 2.9.0.rc2
11
13
  platform: ruby
12
14
  authors:
13
15
  - Steven Baker
@@ -16,18 +18,64 @@ autorequire:
16
18
  bindir: bin
17
19
  cert_chain: []
18
20
 
19
- date: 2012-01-05 00:00:00 Z
20
- dependencies: []
21
-
21
+ date: 2012-03-12 00:00:00 Z
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 63
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 2
34
+ version: 0.9.2
35
+ prerelease: false
36
+ requirement: *id001
37
+ name: rake
38
+ type: :development
39
+ - !ruby/object:Gem::Dependency
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 1
46
+ segments:
47
+ - 1
48
+ - 1
49
+ - 9
50
+ version: 1.1.9
51
+ prerelease: false
52
+ requirement: *id002
53
+ name: cucumber
54
+ type: :development
55
+ - !ruby/object:Gem::Dependency
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 25
62
+ segments:
63
+ - 0
64
+ - 4
65
+ - 11
66
+ version: 0.4.11
67
+ prerelease: false
68
+ requirement: *id003
69
+ name: aruba
70
+ type: :development
22
71
  description: RSpec's 'test double' framework, with support for stubbing and mocking
23
72
  email: rspec-users@rubyforge.org
24
73
  executables: []
25
74
 
26
75
  extensions: []
27
76
 
28
- extra_rdoc_files:
29
- - README.md
30
- - License.txt
77
+ extra_rdoc_files: []
78
+
31
79
  files:
32
80
  - lib/rspec/mocks.rb
33
81
  - lib/rspec/mocks/any_instance.rb
@@ -54,8 +102,11 @@ files:
54
102
  - lib/rspec/mocks/standalone.rb
55
103
  - lib/rspec/mocks/version.rb
56
104
  - lib/spec/mocks.rb
57
- - License.txt
58
105
  - README.md
106
+ - License.txt
107
+ - Changelog.md
108
+ - .yardopts
109
+ - .document
59
110
  - features/README.markdown
60
111
  - features/Scope.md
61
112
  - features/Upgrade.md
@@ -144,19 +195,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
195
  required_rubygems_version: !ruby/object:Gem::Requirement
145
196
  none: false
146
197
  requirements:
147
- - - ">="
198
+ - - ">"
148
199
  - !ruby/object:Gem::Version
149
- hash: 3
200
+ hash: 25
150
201
  segments:
151
- - 0
152
- version: "0"
202
+ - 1
203
+ - 3
204
+ - 1
205
+ version: 1.3.1
153
206
  requirements: []
154
207
 
155
208
  rubyforge_project: rspec
156
- rubygems_version: 1.8.11
209
+ rubygems_version: 1.8.15
157
210
  signing_key:
158
211
  specification_version: 3
159
- summary: rspec-mocks-2.8.0
212
+ summary: rspec-mocks-2.9.0.rc2
160
213
  test_files:
161
214
  - features/README.markdown
162
215
  - features/Scope.md