minitest-stub_any_instance 1.0.2 → 1.0.3
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.
- checksums.yaml +5 -5
- data/lib/minitest/stub_any_instance.rb +16 -6
- data/test/stub_any_instance_test.rb +42 -1
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 074f799ebd6b86158091e84929bff1fe48868286d866b8df1a1c40663647ad6b
|
4
|
+
data.tar.gz: c203683265aea71324669593243135c96ae4e43a8eee1bca338944868bf28349
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd432d6410b0adb42c3a3a4e74c595002698ac427ba2d38abe9ff43677f550a5b31611e458b9fe42ea0572dc733aa4bc70ade9bd194a1eb47cbb8c26ee43644c
|
7
|
+
data.tar.gz: 39c7a9f1a2f59ad09166882b3d1ec63d640d12403d8cf2173f99a924dff23b44c3ef0661ecd27eed41c5b4c3ae1df446207b8c6cda078fabbf4d7e6fb8ff179a
|
@@ -1,16 +1,26 @@
|
|
1
1
|
class BasicObject
|
2
|
-
def self.stub_any_instance
|
2
|
+
def self.stub_any_instance(name, val_or_callable = nil, &block)
|
3
3
|
new_name = "__minitest_any_instance_stub__#{name}"
|
4
4
|
|
5
5
|
owns_method = instance_method(name).owner == self
|
6
6
|
class_eval do
|
7
7
|
alias_method new_name, name if owns_method
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
if ::RUBY_VERSION >= "3"
|
10
|
+
define_method(name) do |*args, **kwargs|
|
11
|
+
if val_or_callable.respond_to?(:call)
|
12
|
+
instance_exec(*args, **kwargs, &val_or_callable)
|
13
|
+
else
|
14
|
+
val_or_callable
|
15
|
+
end
|
16
|
+
end
|
17
|
+
else
|
18
|
+
define_method(name) do |*args|
|
19
|
+
if val_or_callable.respond_to?(:call)
|
20
|
+
instance_exec(*args, &val_or_callable)
|
21
|
+
else
|
22
|
+
val_or_callable
|
23
|
+
end
|
14
24
|
end
|
15
25
|
end
|
16
26
|
end
|
@@ -19,7 +19,14 @@ module StubAnyInstanceTest
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
if Gem.loaded_specs["minitest"].version < Gem::Version.create('5.0')
|
23
|
+
MinitestTestClass = MiniTest::Unit::TestCase
|
24
|
+
else
|
25
|
+
MinitestTestClass = Minitest::Test
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
class TestStubAnyInstance < MinitestTestClass
|
23
30
|
def setup
|
24
31
|
$stderr = StringIO.new
|
25
32
|
end
|
@@ -33,6 +40,15 @@ class TestStubAnyInstance < MiniTest::Unit::TestCase
|
|
33
40
|
assert got_here
|
34
41
|
end
|
35
42
|
|
43
|
+
def test_stubs_a_method_without_passing_any_value
|
44
|
+
got_here = false
|
45
|
+
String.stub_any_instance(:length) do
|
46
|
+
assert_nil "hello".length
|
47
|
+
got_here = true
|
48
|
+
end
|
49
|
+
assert got_here
|
50
|
+
end
|
51
|
+
|
36
52
|
def test_restores_the_original_method_after_the_block
|
37
53
|
string = "hello world"
|
38
54
|
got_here = false
|
@@ -67,4 +83,29 @@ class TestStubAnyInstance < MiniTest::Unit::TestCase
|
|
67
83
|
def test_stubbed_method_does_not_get_restored_to_non_owning_class
|
68
84
|
assert_equal 'bar', ::StubAnyInstanceTest::ChildClass.new.foo
|
69
85
|
end
|
86
|
+
|
87
|
+
def test_stubbing_method_with_arguments
|
88
|
+
original_string = "do not change me"
|
89
|
+
changed_string = "i changed"
|
90
|
+
gsubbed = original_string.gsub(original_string, changed_string)
|
91
|
+
assert_equal gsubbed, changed_string
|
92
|
+
|
93
|
+
String.stub_any_instance(:gsub, original_string) do
|
94
|
+
gsubbed = original_string.gsub(original_string, changed_string)
|
95
|
+
assert_equal gsubbed, original_string
|
96
|
+
assert gsubbed != changed_string
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_stubbing_method_with_keyword_arguments
|
101
|
+
original_string = "do not change me"
|
102
|
+
assert_equal original_string.length, 16
|
103
|
+
|
104
|
+
use_return_arg = ->(return_arg: 0) { return_arg }
|
105
|
+
String.stub_any_instance(:length, use_return_arg) do
|
106
|
+
result = original_string.length(return_arg: :foo)
|
107
|
+
assert_equal result, :foo
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
70
111
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-stub_any_instance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Larbi
|
8
8
|
- Vasiliy Ermolovich
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -66,7 +66,7 @@ homepage: https://github.com/codeodor/minitest-stub_any_instance
|
|
66
66
|
licenses:
|
67
67
|
- MIT
|
68
68
|
metadata: {}
|
69
|
-
post_install_message:
|
69
|
+
post_install_message:
|
70
70
|
rdoc_options: []
|
71
71
|
require_paths:
|
72
72
|
- lib
|
@@ -74,16 +74,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
74
|
requirements:
|
75
75
|
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
77
|
+
version: '2.0'
|
78
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
|
85
|
-
|
86
|
-
signing_key:
|
84
|
+
rubygems_version: 3.0.3
|
85
|
+
signing_key:
|
87
86
|
specification_version: 4
|
88
87
|
summary: ''
|
89
88
|
test_files:
|