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.
data/Changelog.md
CHANGED
@@ -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
|
|
data/features/support/env.rb
CHANGED
@@ -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={}, &
|
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
|
-
|
28
|
-
@
|
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
|
-
|
80
|
+
self.inner_implementation_action = implementation
|
80
81
|
else
|
81
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
178
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
431
|
-
|
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
|
-
#
|
461
|
-
# `and_return` and `and_yield` instructions.
|
459
|
+
# Handles the implementation of an `and_yield` declaration.
|
462
460
|
# @private
|
463
|
-
class
|
464
|
-
def initialize(
|
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
|
472
|
-
|
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
|
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
|
data/lib/rspec/mocks/version.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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:
|
25
|
-
|
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
|
-
|
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:
|
41
|
-
|
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
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
56
|
+
requirements:
|
50
57
|
- - ~>
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
|
53
|
-
|
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
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
segments:
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
hash: 3
|
207
|
+
segments:
|
207
208
|
- 0
|
208
|
-
|
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.
|
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
|