rspec-mocks 2.13.0 → 2.13.1

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.
@@ -1,3 +1,11 @@
1
+ ### 2.13.1 / 2013-04-06
2
+ [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.13.0...v2.13.1)
3
+
4
+ Bug fixes
5
+
6
+ * Allow a block implementation to be used in combination with
7
+ `and_yield`, `and_raise`, `and_return` or `and_throw` (Myron Marston).
8
+
1
9
  ### 2.13.0 / 2013-02-23
2
10
  [full changelog](http://github.com/rspec/rspec-mocks/compare/v2.12.2...v2.13.0)
3
11
 
@@ -4,3 +4,10 @@ require 'rspec/expectations'
4
4
  Before do
5
5
  RUBY_PLATFORM =~ /java/ ? @aruba_timeout_seconds = 60 : @aruba_timeout_seconds = 5
6
6
  end
7
+
8
+ Aruba.configure do |config|
9
+ config.before_cmd do |cmd|
10
+ set_env('JRUBY_OPTS', "-X-C #{ENV['JRUBY_OPTS']}") # disable JIT since these processes are so short lived
11
+ end
12
+ end if RUBY_PLATFORM == 'java'
13
+
@@ -10,7 +10,7 @@ module RSpec
10
10
 
11
11
  # @private
12
12
  def initialize(error_generator, expectation_ordering, expected_from, method_double,
13
- expected_received_count=1, opts={}, &implementation)
13
+ expected_received_count=1, opts={}, &implementation_block)
14
14
  @error_generator = error_generator
15
15
  @error_generator.opts = opts
16
16
  @expected_from = expected_from
@@ -24,8 +24,9 @@ module RSpec
24
24
  @args_to_yield = []
25
25
  @failed_fast = nil
26
26
  @eval_context = nil
27
- @implementation = implementation
28
- @values_to_return = nil
27
+
28
+ @implementation = Implementation.new
29
+ self.inner_implementation_action = implementation_block
29
30
  end
30
31
 
31
32
  # @private
@@ -76,11 +77,12 @@ module RSpec
76
77
 
77
78
  if implementation
78
79
  # TODO: deprecate `and_return { value }`
79
- @implementation = implementation
80
+ self.inner_implementation_action = implementation
80
81
  else
81
- @values_to_return = values
82
- @implementation = build_implementation
82
+ self.terminal_implementation_action = AndReturnImplementation.new(values)
83
83
  end
84
+
85
+ nil
84
86
  end
85
87
 
86
88
  # Tells the object to delegate to the original unmodified method
@@ -98,7 +100,7 @@ module RSpec
98
100
  if @method_double.object.is_a?(RSpec::Mocks::TestDouble)
99
101
  @error_generator.raise_only_valid_on_a_partial_mock(:and_call_original)
100
102
  else
101
- @implementation = @method_double.original_method
103
+ @implementation = AndCallOriginalImplementation.new(@method_double.original_method)
102
104
  end
103
105
  end
104
106
 
@@ -128,7 +130,8 @@ module RSpec
128
130
  exception = message ? exception.exception(message) : exception.exception
129
131
  end
130
132
 
131
- @implementation = Proc.new { raise exception }
133
+ self.terminal_implementation_action = Proc.new { raise exception }
134
+ nil
132
135
  end
133
136
 
134
137
  # @overload and_throw(symbol)
@@ -142,7 +145,8 @@ module RSpec
142
145
  # car.stub(:go).and_throw(:out_of_gas)
143
146
  # car.stub(:go).and_throw(:out_of_gas, :level => 0.1)
144
147
  def and_throw(*args)
145
- @implementation = Proc.new { throw *args }
148
+ self.terminal_implementation_action = Proc.new { throw *args }
149
+ nil
146
150
  end
147
151
 
148
152
  # Tells the object to yield one or more args to a block when the message
@@ -154,7 +158,7 @@ module RSpec
154
158
  def and_yield(*args, &block)
155
159
  yield @eval_context = Object.new.extend(RSpec::Mocks::InstanceExec) if block
156
160
  @args_to_yield << args
157
- @implementation = build_implementation
161
+ self.initial_implementation_action = AndYieldImplementation.new(@args_to_yield, @eval_context, @error_generator)
158
162
  self
159
163
  end
160
164
 
@@ -174,8 +178,8 @@ module RSpec
174
178
  @order_group.handle_order_constraint self
175
179
 
176
180
  begin
177
- if @implementation
178
- call_implementation(*args, &block)
181
+ if implementation.present?
182
+ implementation.call(*args, &block)
179
183
  elsif parent_stub
180
184
  parent_stub.invoke(nil, *args, &block)
181
185
  end
@@ -278,7 +282,7 @@ module RSpec
278
282
  # cart.add(Book.new(:isbn => 1934356379))
279
283
  # # => passes
280
284
  def with(*args, &block)
281
- @implementation = block if block_given? unless args.empty?
285
+ self.inner_implementation_action = block if block_given? unless args.empty?
282
286
  @argument_list_matcher = ArgumentListMatcher.new(*args, &block)
283
287
  self
284
288
  end
@@ -290,7 +294,7 @@ module RSpec
290
294
  #
291
295
  # dealer.should_receive(:deal_card).exactly(10).times
292
296
  def exactly(n, &block)
293
- @implementation = block if block
297
+ self.inner_implementation_action = block
294
298
  set_expected_received_count :exactly, n
295
299
  self
296
300
  end
@@ -302,7 +306,7 @@ module RSpec
302
306
  #
303
307
  # dealer.should_receive(:deal_card).at_least(9).times
304
308
  def at_least(n, &block)
305
- @implementation = block if block
309
+ self.inner_implementation_action = block
306
310
  set_expected_received_count :at_least, n
307
311
  self
308
312
  end
@@ -314,7 +318,7 @@ module RSpec
314
318
  #
315
319
  # dealer.should_receive(:deal_card).at_most(10).times
316
320
  def at_most(n, &block)
317
- @implementation = block if block
321
+ self.inner_implementation_action = block
318
322
  set_expected_received_count :at_most, n
319
323
  self
320
324
  end
@@ -327,14 +331,14 @@ module RSpec
327
331
  # dealer.should_receive(:deal_card).at_least(10).times
328
332
  # dealer.should_receive(:deal_card).at_most(10).times
329
333
  def times(&block)
330
- @implementation = block if block
334
+ self.inner_implementation_action = block
331
335
  self
332
336
  end
333
337
 
334
338
 
335
339
  # Allows an expected message to be received any number of times.
336
340
  def any_number_of_times(&block)
337
- @implementation = block if block
341
+ self.inner_implementation_action = block
338
342
  @expected_received_count = :any
339
343
  self
340
344
  end
@@ -355,7 +359,7 @@ module RSpec
355
359
  #
356
360
  # car.should_receive(:go).once
357
361
  def once(&block)
358
- @implementation = block if block
362
+ self.inner_implementation_action = block
359
363
  set_expected_received_count :exactly, 1
360
364
  self
361
365
  end
@@ -366,7 +370,7 @@ module RSpec
366
370
  #
367
371
  # car.should_receive(:go).twice
368
372
  def twice(&block)
369
- @implementation = block if block
373
+ self.inner_implementation_action = block
370
374
  set_expected_received_count :exactly, 2
371
375
  self
372
376
  end
@@ -379,7 +383,7 @@ module RSpec
379
383
  # api.should_receive(:run).ordered
380
384
  # api.should_receive(:finish).ordered
381
385
  def ordered(&block)
382
- @implementation = block if block
386
+ self.inner_implementation_action = block
383
387
  @order_group.register(self)
384
388
  @ordered = true
385
389
  self
@@ -400,15 +404,7 @@ module RSpec
400
404
  @actual_received_count += 1
401
405
  end
402
406
 
403
- protected
404
-
405
- def call_implementation(*args, &block)
406
- if @implementation.arity.zero?
407
- @implementation.call(&block)
408
- else
409
- @implementation.call(*args, &block)
410
- end
411
- end
407
+ private
412
408
 
413
409
  def failed_fast?
414
410
  @failed_fast
@@ -425,13 +421,16 @@ module RSpec
425
421
  end
426
422
  end
427
423
 
428
- private
424
+ def initial_implementation_action=(action)
425
+ implementation.initial_action = action
426
+ end
427
+
428
+ def inner_implementation_action=(action)
429
+ implementation.inner_action = action if action
430
+ end
429
431
 
430
- def build_implementation
431
- Implementation.new(
432
- @values_to_return, @args_to_yield,
433
- @eval_context, @error_generator
434
- ).method(:call)
432
+ def terminal_implementation_action=(action)
433
+ implementation.terminal_action = action
435
434
  end
436
435
  end
437
436
 
@@ -457,29 +456,20 @@ MSG
457
456
  end
458
457
  end
459
458
 
460
- # Represents a configured implementation. Takes into account
461
- # `and_return` and `and_yield` instructions.
459
+ # Handles the implementation of an `and_yield` declaration.
462
460
  # @private
463
- class Implementation
464
- def initialize(values_to_return, args_to_yield, eval_context, error_generator)
465
- @values_to_return = values_to_return
461
+ class AndYieldImplementation
462
+ def initialize(args_to_yield, eval_context, error_generator)
466
463
  @args_to_yield = args_to_yield
467
464
  @eval_context = eval_context
468
465
  @error_generator = error_generator
469
466
  end
470
467
 
471
- def call(&block)
472
- default_return_value = perform_yield(&block)
473
- return default_return_value unless @values_to_return
474
-
475
- if @values_to_return.size > 1
476
- @values_to_return.shift
477
- else
478
- @values_to_return.first
479
- end
468
+ def arity
469
+ 0
480
470
  end
481
471
 
482
- def perform_yield(&block)
472
+ def call(&block)
483
473
  return if @args_to_yield.empty? && @eval_context.nil?
484
474
 
485
475
  @error_generator.raise_missing_block_error @args_to_yield unless block
@@ -493,5 +483,85 @@ MSG
493
483
  value
494
484
  end
495
485
  end
486
+
487
+ # Handles the implementation of an `and_return` implementation.
488
+ # @private
489
+ class AndReturnImplementation
490
+ def initialize(values_to_return)
491
+ @values_to_return = values_to_return
492
+ end
493
+
494
+ def arity
495
+ 0
496
+ end
497
+
498
+ def call(&block)
499
+ if @values_to_return.size > 1
500
+ @values_to_return.shift
501
+ else
502
+ @values_to_return.first
503
+ end
504
+ end
505
+ end
506
+
507
+ # Represents a configured implementation. Takes into account
508
+ # any number of sub-implementations.
509
+ # @private
510
+ class Implementation
511
+ attr_accessor :initial_action, :inner_action, :terminal_action
512
+
513
+ def call(*args, &block)
514
+ actions.map do |action|
515
+ action.arity.zero? ? action.call(&block) : action.call(*args, &block)
516
+ end.last
517
+ end
518
+
519
+ def present?
520
+ actions.any?
521
+ end
522
+
523
+ private
524
+
525
+ def actions
526
+ [initial_action, inner_action, terminal_action].compact
527
+ end
528
+ end
529
+
530
+ # Represents an `and_call_original` implementation.
531
+ # @private
532
+ class AndCallOriginalImplementation
533
+ def initialize(method)
534
+ @method = method
535
+ end
536
+
537
+ CannotModifyFurtherError = Class.new(StandardError)
538
+
539
+ def initial_action=(value)
540
+ raise cannot_modify_further_error
541
+ end
542
+
543
+ def inner_action=(value)
544
+ raise cannot_modify_further_error
545
+ end
546
+
547
+ def terminal_action=(value)
548
+ raise cannot_modify_further_error
549
+ end
550
+
551
+ def present?
552
+ true
553
+ end
554
+
555
+ def call(*args, &block)
556
+ @method.call(*args, &block)
557
+ end
558
+
559
+ private
560
+
561
+ def cannot_modify_further_error
562
+ CannotModifyFurtherError.new "This method has already been configured " +
563
+ "to call the original implementation, and cannot be modified further."
564
+ end
565
+ end
496
566
  end
497
567
  end
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Mocks
3
3
  module Version
4
- STRING = '2.13.0'
4
+ STRING = '2.13.1'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,197 @@
1
+ require 'spec_helper'
2
+
3
+ module RSpec
4
+ module Mocks
5
+ describe "Combining implementation instructions" do
6
+ it 'can combine and_yield and and_return' do
7
+ dbl = double
8
+ dbl.stub(:foo).and_yield(5).and_return(3)
9
+
10
+ expect { |b|
11
+ expect(dbl.foo(&b)).to eq(3)
12
+ }.to yield_with_args(5)
13
+ end
14
+
15
+ describe "combining and_yield, a block implementation and and_return" do
16
+ def verify_combined_implementation
17
+ dbl = double
18
+ (yield dbl).and_yield(5).and_return(3)
19
+
20
+ expect { |b|
21
+ expect(dbl.foo(:arg, &b)).to eq(3)
22
+ }.to yield_with_args(5)
23
+
24
+ expect(@block_called).to be_true
25
+ end
26
+
27
+ it 'works when passing a block to `stub`' do
28
+ verify_combined_implementation do |dbl|
29
+ dbl.stub(:foo) { @block_called = true }
30
+ end
31
+ end
32
+
33
+ it 'works when passing a block to `with`' do
34
+ verify_combined_implementation do |dbl|
35
+ dbl.stub(:foo).with(:arg) { @block_called = true }
36
+ end
37
+ end
38
+
39
+ it 'works when passing a block to `exactly`' do
40
+ verify_combined_implementation do |dbl|
41
+ dbl.should_receive(:foo).exactly(:once) { @block_called = true }
42
+ end
43
+ end
44
+
45
+ it 'works when passing a block to `at_least`' do
46
+ verify_combined_implementation do |dbl|
47
+ dbl.should_receive(:foo).at_least(:once) { @block_called = true }
48
+ end
49
+ end
50
+
51
+ it 'works when passing a block to `at_most`' do
52
+ verify_combined_implementation do |dbl|
53
+ dbl.should_receive(:foo).at_most(:once) { @block_called = true }
54
+ end
55
+ end
56
+
57
+ it 'works when passing a block to `times`' do
58
+ verify_combined_implementation do |dbl|
59
+ dbl.should_receive(:foo).exactly(1).times { @block_called = true }
60
+ end
61
+ end
62
+
63
+ it 'works when passing a block to `any_number_of_times`' do
64
+ verify_combined_implementation do |dbl|
65
+ dbl.should_receive(:foo).any_number_of_times { @block_called = true }
66
+ end
67
+ end
68
+
69
+ it 'works when passing a block to `once`' do
70
+ verify_combined_implementation do |dbl|
71
+ dbl.should_receive(:foo).once { @block_called = true }
72
+ end
73
+ end
74
+
75
+ it 'works when passing a block to `twice`' do
76
+ the_double = nil
77
+
78
+ verify_combined_implementation do |dbl|
79
+ the_double = dbl
80
+ dbl.should_receive(:foo).twice { @block_called = true }
81
+ end
82
+
83
+ the_double.foo { |a| } # to ensure it is called twice
84
+ end
85
+
86
+ it 'works when passing a block to `ordered`' do
87
+ verify_combined_implementation do |dbl|
88
+ dbl.should_receive(:foo).ordered { @block_called = true }
89
+ end
90
+ end
91
+ end
92
+
93
+ it 'can combine and_yield and and_return with a block' do
94
+ dbl = double
95
+ dbl.stub(:foo).and_yield(5).and_return { :return }
96
+
97
+ expect { |b|
98
+ expect(dbl.foo(&b)).to eq(:return)
99
+ }.to yield_with_args(5)
100
+ end
101
+
102
+ it 'can combine and_yield and and_raise' do
103
+ dbl = double
104
+ dbl.stub(:foo).and_yield(5).and_raise("boom")
105
+
106
+ expect { |b|
107
+ expect { dbl.foo(&b) }.to raise_error("boom")
108
+ }.to yield_with_args(5)
109
+ end
110
+
111
+ it 'can combine and_yield, a block implementation and and_raise' do
112
+ dbl = double
113
+ block_called = false
114
+ dbl.stub(:foo) { block_called = true }.and_yield(5).and_raise("boom")
115
+
116
+ expect { |b|
117
+ expect { dbl.foo(&b) }.to raise_error("boom")
118
+ }.to yield_with_args(5)
119
+
120
+ expect(block_called).to be_true
121
+ end
122
+
123
+ it 'can combine and_yield and and_throw' do
124
+ dbl = double
125
+ dbl.stub(:foo).and_yield(5).and_throw(:bar)
126
+
127
+ expect { |b|
128
+ expect { dbl.foo(&b) }.to throw_symbol(:bar)
129
+ }.to yield_with_args(5)
130
+ end
131
+
132
+ it 'can combine and_yield, a block implementation and and_throw' do
133
+ dbl = double
134
+ block_called = false
135
+ dbl.stub(:foo) { block_called = true }.and_yield(5).and_throw(:bar)
136
+
137
+ expect { |b|
138
+ expect { dbl.foo(&b) }.to throw_symbol(:bar)
139
+ }.to yield_with_args(5)
140
+
141
+ expect(block_called).to be_true
142
+ end
143
+
144
+ it 'returns `nil` from all terminal actions to discourage further configuration' do
145
+ expect(double.stub(:foo).and_return(1)).to be_nil
146
+ expect(double.stub(:foo).and_raise("boom")).to be_nil
147
+ expect(double.stub(:foo).and_throw(:foo)).to be_nil
148
+ end
149
+
150
+ it 'allows the terminal action to be overriden' do
151
+ dbl = double
152
+ stubbed_double = dbl.stub(:foo)
153
+
154
+ stubbed_double.and_return(1)
155
+ expect(dbl.foo).to eq(1)
156
+
157
+ stubbed_double.and_return(3)
158
+ expect(dbl.foo).to eq(3)
159
+
160
+ stubbed_double.and_raise("boom")
161
+ expect { dbl.foo }.to raise_error("boom")
162
+
163
+ stubbed_double.and_throw(:bar)
164
+ expect { dbl.foo }.to throw_symbol(:bar)
165
+ end
166
+
167
+ it 'allows the inner implementation block to be overriden' do
168
+ dbl = double
169
+ stubbed_double = dbl.stub(:foo)
170
+
171
+ stubbed_double.with(:arg) { :with_block }
172
+ expect(dbl.foo(:arg)).to eq(:with_block)
173
+
174
+ stubbed_double.at_least(:once) { :at_least_block }
175
+ expect(dbl.foo(:arg)).to eq(:at_least_block)
176
+ end
177
+
178
+ it 'raises an error if `and_call_original` is followed by any other instructions' do
179
+ dbl = [1, 2, 3]
180
+ stubbed = dbl.stub(:size)
181
+ stubbed.and_call_original
182
+
183
+ msg_fragment = /cannot be modified further/
184
+
185
+ expect { stubbed.and_yield }.to raise_error(msg_fragment)
186
+ expect { stubbed.and_return(1) }.to raise_error(msg_fragment)
187
+ expect { stubbed.and_raise("a") }.to raise_error(msg_fragment)
188
+ expect { stubbed.and_throw(:bar) }.to raise_error(msg_fragment)
189
+
190
+ expect { stubbed.once { } }.to raise_error(msg_fragment)
191
+
192
+ expect(dbl.size).to eq(3)
193
+ end
194
+ end
195
+ end
196
+ end
197
+
metadata CHANGED
@@ -1,71 +1,79 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rspec-mocks
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ hash: 57
4
5
  prerelease:
5
- version: 2.13.0
6
+ segments:
7
+ - 2
8
+ - 13
9
+ - 1
10
+ version: 2.13.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Steven Baker
9
14
  - David Chelimsky
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2013-02-23 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
+
19
+ date: 2013-04-07 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
18
25
  - - ~>
19
- - !ruby/object:Gem::Version
26
+ - !ruby/object:Gem::Version
27
+ hash: 79
28
+ segments:
29
+ - 10
30
+ - 0
31
+ - 0
20
32
  version: 10.0.0
21
- none: false
22
33
  prerelease: false
34
+ type: :development
23
35
  name: rake
24
- requirement: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- version: 10.0.0
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
29
39
  none: false
30
- type: :development
31
- - !ruby/object:Gem::Dependency
32
- version_requirements: !ruby/object:Gem::Requirement
33
- requirements:
40
+ requirements:
34
41
  - - ~>
35
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
43
+ hash: 1
44
+ segments:
45
+ - 1
46
+ - 1
47
+ - 9
36
48
  version: 1.1.9
37
- none: false
38
49
  prerelease: false
50
+ type: :development
39
51
  name: cucumber
40
- requirement: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- version: 1.1.9
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
45
55
  none: false
46
- type: :development
47
- - !ruby/object:Gem::Dependency
48
- version_requirements: !ruby/object:Gem::Requirement
49
- requirements:
56
+ requirements:
50
57
  - - ~>
51
- - !ruby/object:Gem::Version
52
- version: 0.4.11
53
- none: false
58
+ - !ruby/object:Gem::Version
59
+ hash: 1
60
+ segments:
61
+ - 0
62
+ - 5
63
+ version: "0.5"
54
64
  prerelease: false
55
- name: aruba
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ~>
59
- - !ruby/object:Gem::Version
60
- version: 0.4.11
61
- none: false
62
65
  type: :development
66
+ name: aruba
67
+ requirement: *id003
63
68
  description: RSpec's 'test double' framework, with support for stubbing and mocking
64
69
  email: rspec-users@rubyforge.org
65
70
  executables: []
71
+
66
72
  extensions: []
73
+
67
74
  extra_rdoc_files: []
68
- files:
75
+
76
+ files:
69
77
  - lib/rspec/mocks.rb
70
78
  - lib/rspec/mocks/any_instance.rb
71
79
  - lib/rspec/mocks/any_instance/chain.rb
@@ -150,6 +158,7 @@ files:
150
158
  - spec/rspec/mocks/bug_report_8165_spec.rb
151
159
  - spec/rspec/mocks/bug_report_830_spec.rb
152
160
  - spec/rspec/mocks/bug_report_957_spec.rb
161
+ - spec/rspec/mocks/combining_implementation_instructions_spec.rb
153
162
  - spec/rspec/mocks/configuration_spec.rb
154
163
  - spec/rspec/mocks/double_spec.rb
155
164
  - spec/rspec/mocks/failing_argument_matchers_spec.rb
@@ -182,38 +191,39 @@ files:
182
191
  - spec/rspec/mocks_spec.rb
183
192
  - spec/spec_helper.rb
184
193
  homepage: http://github.com/rspec/rspec-mocks
185
- licenses:
194
+ licenses:
186
195
  - MIT
187
196
  post_install_message:
188
- rdoc_options:
197
+ rdoc_options:
189
198
  - --charset=UTF-8
190
- require_paths:
199
+ require_paths:
191
200
  - lib
192
- required_ruby_version: !ruby/object:Gem::Requirement
193
- requirements:
194
- - - ! '>='
195
- - !ruby/object:Gem::Version
196
- version: '0'
197
- segments:
198
- - 0
199
- hash: 2521574480756142487
201
+ required_ruby_version: !ruby/object:Gem::Requirement
200
202
  none: false
201
- required_rubygems_version: !ruby/object:Gem::Requirement
202
- requirements:
203
- - - ! '>='
204
- - !ruby/object:Gem::Version
205
- version: '0'
206
- segments:
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ hash: 3
207
+ segments:
207
208
  - 0
208
- hash: 2521574480756142487
209
+ version: "0"
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
211
  none: false
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ hash: 3
216
+ segments:
217
+ - 0
218
+ version: "0"
210
219
  requirements: []
220
+
211
221
  rubyforge_project: rspec
212
222
  rubygems_version: 1.8.24
213
223
  signing_key:
214
224
  specification_version: 3
215
- summary: rspec-mocks-2.13.0
216
- test_files:
225
+ summary: rspec-mocks-2.13.1
226
+ test_files:
217
227
  - features/README.md
218
228
  - features/Scope.md
219
229
  - features/Upgrade.md
@@ -261,6 +271,7 @@ test_files:
261
271
  - spec/rspec/mocks/bug_report_8165_spec.rb
262
272
  - spec/rspec/mocks/bug_report_830_spec.rb
263
273
  - spec/rspec/mocks/bug_report_957_spec.rb
274
+ - spec/rspec/mocks/combining_implementation_instructions_spec.rb
264
275
  - spec/rspec/mocks/configuration_spec.rb
265
276
  - spec/rspec/mocks/double_spec.rb
266
277
  - spec/rspec/mocks/failing_argument_matchers_spec.rb