minitest-stub_any_instance 1.0.1 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29c09d162c9eb62d1ea86dafab57a4a944e65ecf
4
- data.tar.gz: f22daa3a8bf6214b6bb90a2d6e0fbd2f8bfa2534
3
+ metadata.gz: 3d419f072287bcd82581e413aad81d8bd2fce844
4
+ data.tar.gz: cbc5e034772668f9e8d300177ed77cc13da81241
5
5
  SHA512:
6
- metadata.gz: 0251e396cbdbb19c4b8ef00b4199e61ff5ea400a74b47dabe5eebaa8893924873f3f038bf3ee997ff42ea5b3677008d91b8c080436678e44c1adda86b23701aa
7
- data.tar.gz: 1fa745a25c4dcd93dffb102555c8e9c093183b1b558f450152ec9e72b1311eca024eaa3cb7fdfe5eb5023a9f2cee91d9528c369cb837014baeb410e2a62a1fa0
6
+ metadata.gz: b8919405ef56b01544131016a2ea10dccf4eb788265405851e7df1870dfb7096493060d54ca74644bd1580c589e907b82fb285307642475e0d89ad6010a62c5b
7
+ data.tar.gz: af7336b7d9c596af39bc2a22f8c80cd323a7e05fbd6c5165e023c7bfba89e3588af54753061ed8c47eb96451aa77cd4062bff0f2ab7afbd350a3842789e6174b
@@ -1,9 +1,10 @@
1
- class Object
1
+ class BasicObject
2
2
  def self.stub_any_instance name, val_or_callable, &block
3
3
  new_name = "__minitest_any_instance_stub__#{name}"
4
4
 
5
+ owns_method = instance_method(name).owner == self
5
6
  class_eval do
6
- alias_method new_name, name
7
+ alias_method new_name, name if owns_method
7
8
 
8
9
  define_method(name) do |*args|
9
10
  if val_or_callable.respond_to? :call then
@@ -17,9 +18,11 @@ class Object
17
18
  yield
18
19
  ensure
19
20
  class_eval do
20
- undef_method name
21
- alias_method name, new_name
22
- undef_method new_name
21
+ remove_method name
22
+ if owns_method
23
+ alias_method name, new_name
24
+ remove_method new_name
25
+ end
23
26
  end
24
27
  end
25
- end
28
+ end
@@ -2,6 +2,23 @@ require 'minitest/autorun'
2
2
  require 'stringio'
3
3
  require File.expand_path("../../lib/minitest/stub_any_instance", __FILE__)
4
4
 
5
+ module StubAnyInstanceTest
6
+ class GrandparentClass < BasicObject
7
+ def foo(_a)
8
+ 'bar'
9
+ end
10
+ end
11
+
12
+ class ParentClass < GrandparentClass
13
+ def foo
14
+ super(:a)
15
+ end
16
+ end
17
+
18
+ class ChildClass < ParentClass
19
+ end
20
+ end
21
+
5
22
  class TestStubAnyInstance < MiniTest::Unit::TestCase
6
23
  def setup
7
24
  $stderr = StringIO.new
@@ -41,4 +58,13 @@ class TestStubAnyInstance < MiniTest::Unit::TestCase
41
58
  end
42
59
  end
43
60
 
61
+ def test_stub_method_not_implemented_in_grandchild_class
62
+ ::StubAnyInstanceTest::ChildClass.stub_any_instance(:foo, :result) do
63
+ assert_equal :result, ::StubAnyInstanceTest::ChildClass.new.foo
64
+ end
65
+ end
66
+
67
+ def test_stubbed_method_does_not_get_restored_to_non_owning_class
68
+ assert_equal 'bar', ::StubAnyInstanceTest::ChildClass.new.foo
69
+ end
44
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-stub_any_instance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sammy Larbi
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-24 00:00:00.000000000 Z
12
+ date: 2018-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.3'
20
+ version: 1.11.2
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.3'
27
+ version: 1.11.2
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: minitest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  description: Adds a method to MiniTest that stubs any instance of a class.
43
57
  email:
44
58
  - sam@codeodor.com
@@ -68,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
82
  version: '0'
69
83
  requirements: []
70
84
  rubyforge_project:
71
- rubygems_version: 2.4.3
85
+ rubygems_version: 2.6.14
72
86
  signing_key:
73
87
  specification_version: 4
74
88
  summary: ''