rspec-fire 0.5.0 → 1.0.0
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/Gemfile +1 -0
- data/HISTORY +4 -0
- data/README.md +1 -23
- data/lib/rspec/fire.rb +7 -157
- data/rspec-fire.gemspec +2 -2
- data/spec/fire_double_spec.rb +0 -249
- metadata +14 -14
data/Gemfile
CHANGED
data/HISTORY
CHANGED
@@ -24,3 +24,7 @@
|
|
24
24
|
0.5.0 - 4 July 2012
|
25
25
|
* Performance improvements, overhead is now roughly 10% down from 100%
|
26
26
|
* Allow both instance and class doubles for unloaded classes.
|
27
|
+
|
28
|
+
1.0.0 - 9 July 2012
|
29
|
+
* RSpec 2.11 compatibility, no longer compatible with earlier versions.
|
30
|
+
* Removed `stub_const`, it is now in `rspec-mocks`.
|
data/README.md
CHANGED
@@ -144,25 +144,6 @@ collaborators (a technique that can sometimes be cumbersome).
|
|
144
144
|
This will probably become the default behaviour once we figure out a better
|
145
145
|
name for it.
|
146
146
|
|
147
|
-
### Stubbing Constants
|
148
|
-
|
149
|
-
The constant stubbing logic used when doubling class constants can be
|
150
|
-
used for any constant.
|
151
|
-
|
152
|
-
class MapReduceRunner
|
153
|
-
ITEMS_PER_BATCH = 1000
|
154
|
-
end
|
155
|
-
|
156
|
-
describe MapReduceRunner, "when it has too many items for one batch" do
|
157
|
-
it "breaks the items up into smaller batches" do
|
158
|
-
# the test would be really slow if we had to make more than 1000 items,
|
159
|
-
# so let's change the threshold for this one test.
|
160
|
-
stub_const("MapReduceRunner::ITEMS_PER_BATCH", 10)
|
161
|
-
|
162
|
-
MapReduceRunner.run_with(twenty_items)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
147
|
### Transferring nested constants to doubled constants
|
167
148
|
|
168
149
|
When you use `fire_replaced_class_double` to replace a class or module
|
@@ -186,9 +167,6 @@ to deal with this:
|
|
186
167
|
# ...or give it a list of constants to transfer
|
187
168
|
fire_class_double("MyCoolGem").as_replaced_constant(:transfer_nested_constants => [:Widget])
|
188
169
|
|
189
|
-
# You can also use this when using #stub_const directly
|
190
|
-
stub_const("MyCoolGem", :transfer_nested_constants => true)
|
191
|
-
|
192
170
|
### Doubling class methods
|
193
171
|
|
194
172
|
Particularly handy for `ActiveRecord` finders. Use `fire_class_double`. If you
|
@@ -207,7 +185,7 @@ refactor or use a non-isolated test.
|
|
207
185
|
Compatibility
|
208
186
|
-------------
|
209
187
|
|
210
|
-
Only RSpec 2 is supported. Tested on all the rubies thanks to [Travis
|
188
|
+
Only RSpec 2.11+ is supported. Tested on all the rubies thanks to [Travis
|
211
189
|
CI][build-link].
|
212
190
|
|
213
191
|
[build-link]: http://travis-ci.org/xaviershay/rspec-fire
|
data/lib/rspec/fire.rb
CHANGED
@@ -135,7 +135,7 @@ module RSpec
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def with_doubled_class
|
138
|
-
|
138
|
+
::RSpec::Fire.find_original_value_for(@__doubled_class_name) do |value|
|
139
139
|
yield value if value
|
140
140
|
return
|
141
141
|
end
|
@@ -230,7 +230,9 @@ module RSpec
|
|
230
230
|
end
|
231
231
|
|
232
232
|
def self.as_replaced_constant(options = {})
|
233
|
-
|
233
|
+
RSpec::Mocks::ConstantStubber.stub(@__doubled_class_name, self, options)
|
234
|
+
@__original_class = RSpec::Mocks::Constant.original(@__doubled_class_name).original_value
|
235
|
+
|
234
236
|
extend AsReplacedConstant
|
235
237
|
self
|
236
238
|
end
|
@@ -256,161 +258,9 @@ module RSpec
|
|
256
258
|
end
|
257
259
|
end
|
258
260
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
class DefinedConstantReplacer
|
263
|
-
include RecursiveConstMethods
|
264
|
-
attr_reader :original_value, :full_constant_name
|
265
|
-
|
266
|
-
def initialize(full_constant_name, stubbed_value, transfer_nested_constants)
|
267
|
-
@full_constant_name = full_constant_name
|
268
|
-
@stubbed_value = stubbed_value
|
269
|
-
@transfer_nested_constants = transfer_nested_constants
|
270
|
-
end
|
271
|
-
|
272
|
-
def stub!
|
273
|
-
context_parts = @full_constant_name.split('::')
|
274
|
-
@const_name = context_parts.pop
|
275
|
-
@context = recursive_const_get(context_parts.join('::'))
|
276
|
-
@original_value = @context.const_get(@const_name)
|
277
|
-
|
278
|
-
constants_to_transfer = verify_constants_to_transfer!
|
279
|
-
|
280
|
-
@context.send(:remove_const, @const_name)
|
281
|
-
@context.const_set(@const_name, @stubbed_value)
|
282
|
-
|
283
|
-
transfer_nested_constants(constants_to_transfer)
|
284
|
-
end
|
285
|
-
|
286
|
-
def rspec_reset
|
287
|
-
if recursive_const_get(@full_constant_name).equal?(@stubbed_value)
|
288
|
-
@context.send(:remove_const, @const_name)
|
289
|
-
@context.const_set(@const_name, @original_value)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
def transfer_nested_constants(constants)
|
294
|
-
constants.each do |const|
|
295
|
-
@stubbed_value.const_set(const, original_value.const_get(const))
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
def verify_constants_to_transfer!
|
300
|
-
return [] unless @transfer_nested_constants
|
301
|
-
|
302
|
-
{ @original_value => "the original value", @stubbed_value => "the stubbed value" }.each do |value, description|
|
303
|
-
unless value.respond_to?(:constants)
|
304
|
-
raise ArgumentError,
|
305
|
-
"Cannot transfer nested constants for #{@full_constant_name} " +
|
306
|
-
"since #{description} is not a class or module and only classes " +
|
307
|
-
"and modules support nested constants."
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
if @transfer_nested_constants.is_a?(Array)
|
312
|
-
@transfer_nested_constants = @transfer_nested_constants.map(&:to_s) if RUBY_VERSION == '1.8.7'
|
313
|
-
undefined_constants = @transfer_nested_constants - @original_value.constants
|
314
|
-
|
315
|
-
if undefined_constants.any?
|
316
|
-
available_constants = @original_value.constants - @transfer_nested_constants
|
317
|
-
raise ArgumentError,
|
318
|
-
"Cannot transfer nested constant(s) #{undefined_constants.join(' and ')} " +
|
319
|
-
"for #{@full_constant_name} since they are not defined. Did you mean " +
|
320
|
-
"#{available_constants.join(' or ')}?"
|
321
|
-
end
|
322
|
-
|
323
|
-
@transfer_nested_constants
|
324
|
-
else
|
325
|
-
@original_value.constants
|
326
|
-
end
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
class UndefinedConstantSetter
|
331
|
-
include RecursiveConstMethods
|
332
|
-
|
333
|
-
attr_reader :full_constant_name
|
334
|
-
|
335
|
-
def initialize(full_constant_name, stubbed_value)
|
336
|
-
@full_constant_name = full_constant_name
|
337
|
-
@stubbed_value = stubbed_value
|
338
|
-
end
|
339
|
-
|
340
|
-
def original_value
|
341
|
-
# always nil
|
342
|
-
end
|
343
|
-
|
344
|
-
def stub!
|
345
|
-
context_parts = @full_constant_name.split('::')
|
346
|
-
const_name = context_parts.pop
|
347
|
-
|
348
|
-
remaining_parts = context_parts.dup
|
349
|
-
@deepest_defined_const = context_parts.inject(Object) do |klass, name|
|
350
|
-
break klass unless klass.const_defined?(name)
|
351
|
-
remaining_parts.shift
|
352
|
-
klass.const_get(name)
|
353
|
-
end
|
354
|
-
|
355
|
-
context = remaining_parts.inject(@deepest_defined_const) do |klass, name|
|
356
|
-
klass.const_set(name, Module.new)
|
357
|
-
end
|
358
|
-
|
359
|
-
@const_to_remove = remaining_parts.first || const_name
|
360
|
-
context.const_set(const_name, @stubbed_value)
|
361
|
-
end
|
362
|
-
|
363
|
-
def rspec_reset
|
364
|
-
if recursive_const_get(@full_constant_name).equal?(@stubbed_value)
|
365
|
-
@deepest_defined_const.send(:remove_const, @const_to_remove)
|
366
|
-
end
|
367
|
-
end
|
368
|
-
end
|
369
|
-
|
370
|
-
def self.stub!(constant_name, value, options = {})
|
371
|
-
stubber = if recursive_const_defined?(constant_name)
|
372
|
-
DefinedConstantReplacer.new(constant_name, value, options[:transfer_nested_constants])
|
373
|
-
else
|
374
|
-
UndefinedConstantSetter.new(constant_name, value)
|
375
|
-
end
|
376
|
-
|
377
|
-
stubbers << stubber
|
378
|
-
|
379
|
-
stubber.stub!
|
380
|
-
ensure_registered_with_rspec_mocks
|
381
|
-
stubber.original_value
|
382
|
-
end
|
383
|
-
|
384
|
-
def self.ensure_registered_with_rspec_mocks
|
385
|
-
return if @registered_with_rspec_mocks
|
386
|
-
::RSpec::Mocks.space.add(self)
|
387
|
-
@registered_with_rspec_mocks = true
|
388
|
-
end
|
389
|
-
|
390
|
-
def self.rspec_reset
|
391
|
-
@registered_with_rspec_mocks = false
|
392
|
-
|
393
|
-
# We use reverse order so that if the same constant
|
394
|
-
# was stubbed multiple times, the original value gets
|
395
|
-
# properly restored.
|
396
|
-
stubbers.reverse.each { |s| s.rspec_reset }
|
397
|
-
|
398
|
-
stubbers.clear
|
399
|
-
end
|
400
|
-
|
401
|
-
def self.stubbers
|
402
|
-
@stubbers ||= []
|
403
|
-
end
|
404
|
-
|
405
|
-
def self.find_original_value_for(constant_name)
|
406
|
-
stubber = stubbers.find { |s| s.full_constant_name == constant_name }
|
407
|
-
yield stubber.original_value if stubber
|
408
|
-
self
|
409
|
-
end
|
410
|
-
end
|
411
|
-
|
412
|
-
def stub_const(name, value, options = {})
|
413
|
-
ConstantStubber.stub!(name, value, options)
|
261
|
+
def self.find_original_value_for(constant_name)
|
262
|
+
const = ::RSpec::Mocks::Constant.original(constant_name)
|
263
|
+
yield const.original_value if const.stubbed?
|
414
264
|
end
|
415
265
|
|
416
266
|
def fire_double(*args)
|
data/rspec-fire.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'rspec-fire'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '1.0.0'
|
4
4
|
s.summary = 'More resilient test doubles for RSpec.'
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.authors = ["Xavier Shay"]
|
@@ -18,6 +18,6 @@ Gem::Specification.new do |s|
|
|
18
18
|
rspec-fire.gemspec
|
19
19
|
)
|
20
20
|
|
21
|
+
s.add_dependency 'rspec', '~> 2.11'
|
21
22
|
s.add_development_dependency 'rake'
|
22
|
-
s.add_development_dependency 'rspec', '~> 2.5'
|
23
23
|
end
|
data/spec/fire_double_spec.rb
CHANGED
@@ -3,8 +3,6 @@ require 'spec_helper'
|
|
3
3
|
def use; end
|
4
4
|
private :use
|
5
5
|
|
6
|
-
TOP_LEVEL_VALUE_CONST = 7
|
7
|
-
|
8
6
|
module TestMethods
|
9
7
|
def defined_method
|
10
8
|
raise "Y U NO MOCK?"
|
@@ -26,11 +24,6 @@ class TestClass
|
|
26
24
|
M = :m
|
27
25
|
N = :n
|
28
26
|
|
29
|
-
class Nested
|
30
|
-
class NestedEvenMore
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
27
|
def self.use
|
35
28
|
raise "Y U NO MOCK?"
|
36
29
|
end
|
@@ -294,248 +287,6 @@ describe '#fire_replaced_class_double (for a non-existant class)' do
|
|
294
287
|
end
|
295
288
|
end
|
296
289
|
|
297
|
-
shared_examples_for "loaded constant stubbing" do |const_name|
|
298
|
-
include RSpec::Fire::RecursiveConstMethods
|
299
|
-
let!(:original_const_value) { const }
|
300
|
-
after { change_const_value_to(original_const_value) }
|
301
|
-
|
302
|
-
define_method :const do
|
303
|
-
recursive_const_get(const_name)
|
304
|
-
end
|
305
|
-
|
306
|
-
define_method :parent_const do
|
307
|
-
recursive_const_get("Object::" + const_name.sub(/(::)?[^:]+\z/, ''))
|
308
|
-
end
|
309
|
-
|
310
|
-
define_method :last_const_part do
|
311
|
-
const_name.split('::').last
|
312
|
-
end
|
313
|
-
|
314
|
-
def change_const_value_to(value)
|
315
|
-
parent_const.send(:remove_const, last_const_part)
|
316
|
-
parent_const.const_set(last_const_part, value)
|
317
|
-
end
|
318
|
-
|
319
|
-
it 'allows it to be stubbed' do
|
320
|
-
const.should_not eq(7)
|
321
|
-
stub_const(const_name, 7)
|
322
|
-
const.should eq(7)
|
323
|
-
end
|
324
|
-
|
325
|
-
it 'resets it to its original value when rspec clears its mocks' do
|
326
|
-
original_value = const
|
327
|
-
original_value.should_not eq(:a)
|
328
|
-
stub_const(const_name, :a)
|
329
|
-
reset_rspec_mocks
|
330
|
-
const.should be(original_value)
|
331
|
-
end
|
332
|
-
|
333
|
-
it 'does not reset the value to its original value when rspec clears its mocks if the example modifies the value of the constant' do
|
334
|
-
stub_const(const_name, :a)
|
335
|
-
change_const_value_to(new_const_value = Object.new)
|
336
|
-
reset_rspec_mocks
|
337
|
-
const.should be(new_const_value)
|
338
|
-
end
|
339
|
-
|
340
|
-
it 'returns the original value' do
|
341
|
-
orig_value = const
|
342
|
-
returned_value = stub_const(const_name, 7)
|
343
|
-
returned_value.should be(orig_value)
|
344
|
-
end
|
345
|
-
end
|
346
|
-
|
347
|
-
shared_examples_for "unloaded constant stubbing" do |const_name|
|
348
|
-
include RSpec::Fire::RecursiveConstMethods
|
349
|
-
before { recursive_const_defined?(const_name).should be_false }
|
350
|
-
|
351
|
-
define_method :const do
|
352
|
-
recursive_const_get(const_name)
|
353
|
-
end
|
354
|
-
|
355
|
-
define_method :parent_const do
|
356
|
-
recursive_const_get("Object::" + const_name.sub(/(::)?[^:]+\z/, ''))
|
357
|
-
end
|
358
|
-
|
359
|
-
define_method :last_const_part do
|
360
|
-
const_name.split('::').last
|
361
|
-
end
|
362
|
-
|
363
|
-
def change_const_value_to(value)
|
364
|
-
parent_const.send(:remove_const, last_const_part)
|
365
|
-
parent_const.const_set(last_const_part, value)
|
366
|
-
end
|
367
|
-
|
368
|
-
it 'allows it to be stubbed' do
|
369
|
-
stub_const(const_name, 7)
|
370
|
-
const.should eq(7)
|
371
|
-
end
|
372
|
-
|
373
|
-
it 'removes the constant when rspec clears its mocks' do
|
374
|
-
stub_const(const_name, 7)
|
375
|
-
reset_rspec_mocks
|
376
|
-
recursive_const_defined?(const_name).should be_false
|
377
|
-
end
|
378
|
-
|
379
|
-
it 'does not remove the constant when the example manually sets it' do
|
380
|
-
begin
|
381
|
-
stub_const(const_name, 7)
|
382
|
-
stubber = RSpec::Fire::ConstantStubber.stubbers.first
|
383
|
-
change_const_value_to(new_const_value = Object.new)
|
384
|
-
reset_rspec_mocks
|
385
|
-
const.should equal(new_const_value)
|
386
|
-
ensure
|
387
|
-
change_const_value_to(7)
|
388
|
-
stubber.rspec_reset
|
389
|
-
end
|
390
|
-
end
|
391
|
-
|
392
|
-
it 'returns nil since it was not originally set' do
|
393
|
-
stub_const(const_name, 7).should be_nil
|
394
|
-
end
|
395
|
-
|
396
|
-
it 'ignores the :transfer_nested_constants if passed' do
|
397
|
-
stub = Module.new
|
398
|
-
stub_const(const_name, stub, :transfer_nested_constants => true)
|
399
|
-
stub.constants.should eq([])
|
400
|
-
end
|
401
|
-
end
|
402
|
-
|
403
|
-
describe "#stub_const" do
|
404
|
-
context 'for a loaded unnested constant' do
|
405
|
-
it_behaves_like "loaded constant stubbing", "TestClass"
|
406
|
-
|
407
|
-
it 'can be stubbed multiple times but still restores the original value properly' do
|
408
|
-
orig_value = TestClass
|
409
|
-
stub1, stub2 = Module.new, Module.new
|
410
|
-
stub_const("TestClass", stub1)
|
411
|
-
stub_const("TestClass", stub2)
|
412
|
-
|
413
|
-
reset_rspec_mocks
|
414
|
-
TestClass.should be(orig_value)
|
415
|
-
end
|
416
|
-
|
417
|
-
it 'allows nested constants to be transferred to a stub module' do
|
418
|
-
tc_nested = TestClass::Nested
|
419
|
-
stub = Module.new
|
420
|
-
stub_const("TestClass", stub, :transfer_nested_constants => true)
|
421
|
-
stub::M.should eq(:m)
|
422
|
-
stub::N.should eq(:n)
|
423
|
-
stub::Nested.should be(tc_nested)
|
424
|
-
end
|
425
|
-
|
426
|
-
it 'allows nested constants to be selectively transferred to a stub module' do
|
427
|
-
stub = Module.new
|
428
|
-
stub_const("TestClass", stub, :transfer_nested_constants => [:M, :N])
|
429
|
-
stub::M.should eq(:m)
|
430
|
-
stub::N.should eq(:n)
|
431
|
-
defined?(stub::Nested).should be_false
|
432
|
-
end
|
433
|
-
|
434
|
-
it 'raises an error if asked to transfer nested constants but given an object that does not support them' do
|
435
|
-
original_tc = TestClass
|
436
|
-
stub = Object.new
|
437
|
-
expect {
|
438
|
-
stub_const("TestClass", stub, :transfer_nested_constants => true)
|
439
|
-
}.to raise_error(ArgumentError)
|
440
|
-
|
441
|
-
TestClass.should be(original_tc)
|
442
|
-
|
443
|
-
expect {
|
444
|
-
stub_const("TestClass", stub, :transfer_nested_constants => [:M])
|
445
|
-
}.to raise_error(ArgumentError)
|
446
|
-
|
447
|
-
TestClass.should be(original_tc)
|
448
|
-
end
|
449
|
-
|
450
|
-
it 'raises an error if asked to transfer nested constants on a constant that does not support nested constants' do
|
451
|
-
stub = Module.new
|
452
|
-
expect {
|
453
|
-
stub_const("TOP_LEVEL_VALUE_CONST", stub, :transfer_nested_constants => true)
|
454
|
-
}.to raise_error(ArgumentError)
|
455
|
-
|
456
|
-
TOP_LEVEL_VALUE_CONST.should eq(7)
|
457
|
-
|
458
|
-
expect {
|
459
|
-
stub_const("TOP_LEVEL_VALUE_CONST", stub, :transfer_nested_constants => [:M])
|
460
|
-
}.to raise_error(ArgumentError)
|
461
|
-
|
462
|
-
TOP_LEVEL_VALUE_CONST.should eq(7)
|
463
|
-
end
|
464
|
-
|
465
|
-
it 'raises an error if asked to transfer a nested constant that is not defined' do
|
466
|
-
original_tc = TestClass
|
467
|
-
defined?(TestClass::V).should be_false
|
468
|
-
stub = Module.new
|
469
|
-
|
470
|
-
expect {
|
471
|
-
stub_const("TestClass", stub, :transfer_nested_constants => [:V])
|
472
|
-
}.to raise_error(/cannot transfer nested constant.*V/i)
|
473
|
-
|
474
|
-
TestClass.should be(original_tc)
|
475
|
-
end
|
476
|
-
end
|
477
|
-
|
478
|
-
context 'for a loaded nested constant' do
|
479
|
-
it_behaves_like "loaded constant stubbing", "TestClass::Nested"
|
480
|
-
end
|
481
|
-
|
482
|
-
context 'for a loaded deeply nested constant' do
|
483
|
-
it_behaves_like "loaded constant stubbing", "TestClass::Nested::NestedEvenMore"
|
484
|
-
end
|
485
|
-
|
486
|
-
context 'for an unloaded unnested constant' do
|
487
|
-
it_behaves_like "unloaded constant stubbing", "X"
|
488
|
-
end
|
489
|
-
|
490
|
-
context 'for an unloaded nested constant' do
|
491
|
-
it_behaves_like "unloaded constant stubbing", "X::Y"
|
492
|
-
|
493
|
-
it 'removes the root constant when rspec clears its mocks' do
|
494
|
-
defined?(X).should be_false
|
495
|
-
stub_const("X::Y", 7)
|
496
|
-
reset_rspec_mocks
|
497
|
-
defined?(X).should be_false
|
498
|
-
end
|
499
|
-
end
|
500
|
-
|
501
|
-
context 'for an unloaded deeply nested constant' do
|
502
|
-
it_behaves_like "unloaded constant stubbing", "X::Y::Z"
|
503
|
-
|
504
|
-
it 'removes the root constant when rspec clears its mocks' do
|
505
|
-
defined?(X).should be_false
|
506
|
-
stub_const("X::Y::Z", 7)
|
507
|
-
reset_rspec_mocks
|
508
|
-
defined?(X).should be_false
|
509
|
-
end
|
510
|
-
end
|
511
|
-
|
512
|
-
context 'for an unloaded constant nested within a loaded constant' do
|
513
|
-
it_behaves_like "unloaded constant stubbing", "TestClass::X"
|
514
|
-
|
515
|
-
it 'removes the unloaded constant but leaves the loaded constant when rspec resets its mocks' do
|
516
|
-
defined?(TestClass).should be_true
|
517
|
-
defined?(TestClass::X).should be_false
|
518
|
-
stub_const("TestClass::X", 7)
|
519
|
-
reset_rspec_mocks
|
520
|
-
defined?(TestClass).should be_true
|
521
|
-
defined?(TestClass::X).should be_false
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
context 'for an unloaded constant nested deeply within a deeply nested loaded constant' do
|
526
|
-
it_behaves_like "unloaded constant stubbing", "TestClass::Nested::NestedEvenMore::X::Y::Z"
|
527
|
-
|
528
|
-
it 'removes the first unloaded constant but leaves the loaded nested constant when rspec resets its mocks' do
|
529
|
-
defined?(TestClass::Nested::NestedEvenMore).should be_true
|
530
|
-
defined?(TestClass::Nested::NestedEvenMore::X).should be_false
|
531
|
-
stub_const("TestClass::Nested::NestedEvenMore::X::Y::Z", 7)
|
532
|
-
reset_rspec_mocks
|
533
|
-
defined?(TestClass::Nested::NestedEvenMore).should be_true
|
534
|
-
defined?(TestClass::Nested::NestedEvenMore::X).should be_false
|
535
|
-
end
|
536
|
-
end
|
537
|
-
end
|
538
|
-
|
539
290
|
describe RSpec::Fire::SupportArityMatcher do
|
540
291
|
def support_arity(arity)
|
541
292
|
RSpec::Fire::SupportArityMatcher.new(arity)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-fire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,30 +9,30 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: rspec
|
16
|
+
requirement: &2156163500 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
22
|
-
type: :
|
21
|
+
version: '2.11'
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156163500
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
26
|
+
name: rake
|
27
|
+
requirement: &2156162900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156162900
|
36
36
|
description:
|
37
37
|
email:
|
38
38
|
- hello@xaviershay.com
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
version: '0'
|
69
69
|
requirements: []
|
70
70
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.8.
|
71
|
+
rubygems_version: 1.8.6
|
72
72
|
signing_key:
|
73
73
|
specification_version: 3
|
74
74
|
summary: More resilient test doubles for RSpec.
|