rspec-mocks 2.13.0 → 2.13.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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