minitest-stub_any_instance 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.
@@ -0,0 +1,25 @@
1
+ class Object
2
+ def self.stub_any_instance name, val_or_callable, &block
3
+ new_name = "__minitest_any_instance_stub__#{name}"
4
+
5
+ class_eval do
6
+ alias_method new_name, name
7
+
8
+ define_method(name) do |*args|
9
+ if val_or_callable.respond_to? :call then
10
+ val_or_callable.call(*args)
11
+ else
12
+ val_or_callable
13
+ end
14
+ end
15
+ end
16
+
17
+ yield
18
+ ensure
19
+ class_eval do
20
+ undef_method name
21
+ alias_method name, new_name
22
+ undef_method new_name
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,36 @@
1
+ require 'minitest/autorun'
2
+ require 'stringio'
3
+ require File.expand_path("../../lib/minitest/stub_any_instance", __FILE__)
4
+
5
+ class TestStubAnyInstance < MiniTest::Unit::TestCase
6
+ def setup
7
+ $stderr = StringIO.new
8
+ end
9
+
10
+ def test_stubs_a_method_for_the_duration_of_a_block
11
+ got_here = false
12
+ String.stub_any_instance(:length, 42) do
13
+ assert_equal "hello".length, 42
14
+ got_here = true
15
+ end
16
+ assert got_here
17
+ end
18
+
19
+ def test_restores_the_original_method_after_the_block
20
+ string = "hello world"
21
+ got_here = false
22
+ String.stub_any_instance(:length, 42) do
23
+ assert_equal string.length, 42
24
+ got_here = true
25
+ end
26
+ assert_equal string.length, 11
27
+ assert got_here
28
+ end
29
+
30
+ def test_does_not_raise_warnings
31
+ got_here = false
32
+ String.stub_any_instance(:length, 42) { got_here = true }
33
+ assert_empty $stderr.string
34
+ assert got_here
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minitest-stub_any_instance
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sammy Larbi
9
+ - Vasiliy Ermolovich
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-09-22 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: &2166611180 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '1.3'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *2166611180
26
+ - !ruby/object:Gem::Dependency
27
+ name: rake
28
+ requirement: &2166610720 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2166610720
37
+ description: Adds a method to MiniTest that stubs any instance of a class.
38
+ email:
39
+ - sam@codeodor.com
40
+ executables: []
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - lib/minitest/stub_any_instance.rb
45
+ - test/stub_any_instance_test.rb
46
+ homepage: https://github.com/codeodor/minitest-stub_any_instance
47
+ licenses:
48
+ - MIT
49
+ post_install_message:
50
+ rdoc_options: []
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubyforge_project:
67
+ rubygems_version: 1.8.8
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: ''
71
+ test_files:
72
+ - test/stub_any_instance_test.rb