muack 1.4.0 → 1.5.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.
- checksums.yaml +5 -5
- data/.travis.yml +19 -9
- data/CHANGES.md +12 -0
- data/Gemfile +0 -4
- data/README.md +17 -16
- data/Rakefile +3 -4
- data/lib/muack/block.rb +4 -15
- data/lib/muack/block_26.rb +16 -0
- data/lib/muack/block_27.rb +16 -0
- data/lib/muack/coat.rb +1 -1
- data/lib/muack/definition.rb +4 -3
- data/lib/muack/failure.rb +5 -4
- data/lib/muack/mock.rb +123 -65
- data/lib/muack/spy.rb +3 -3
- data/lib/muack/stub.rb +7 -5
- data/lib/muack/test.rb +42 -11
- data/lib/muack/version.rb +1 -1
- data/muack.gemspec +65 -57
- data/task/README.md +8 -8
- data/task/gemgem.rb +29 -7
- data/test/test_any_instance_of.rb +16 -2
- data/test/test_from_readme.rb +5 -7
- data/test/test_keyargs.rb +111 -0
- data/test/test_modifier.rb +6 -6
- data/test/test_prepend.rb +121 -0
- data/test/test_proxy.rb +19 -4
- data/test/test_satisfying.rb +12 -12
- data/test/test_spy.rb +4 -4
- data/test/test_visibility.rb +120 -0
- metadata +15 -8
@@ -0,0 +1,120 @@
|
|
1
|
+
|
2
|
+
require 'muack/test'
|
3
|
+
|
4
|
+
describe 'retain visibility' do
|
5
|
+
after do
|
6
|
+
expect(Muack.verify).eq true
|
7
|
+
end
|
8
|
+
|
9
|
+
def verify obj, visibility
|
10
|
+
expect(Muack.verify).eq true
|
11
|
+
|
12
|
+
if visibility == :public
|
13
|
+
expect(obj).respond_to? :hello
|
14
|
+
else
|
15
|
+
expect(obj).not.respond_to? :hello
|
16
|
+
expect(obj).respond_to? :hello, true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def generate visibility
|
21
|
+
klass = Class.new do
|
22
|
+
def greet
|
23
|
+
'hi'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
mod = Module.new do
|
28
|
+
def greet
|
29
|
+
hello
|
30
|
+
end
|
31
|
+
|
32
|
+
def hello
|
33
|
+
'hello'
|
34
|
+
end
|
35
|
+
send visibility, :hello
|
36
|
+
end
|
37
|
+
|
38
|
+
perform(klass, mod)
|
39
|
+
end
|
40
|
+
|
41
|
+
copy :test do
|
42
|
+
%i[public protected private].each do |visibility|
|
43
|
+
would "stub with #{visibility}" do
|
44
|
+
obj = generate(visibility)
|
45
|
+
|
46
|
+
stub(obj).hello{'stubbed'}
|
47
|
+
|
48
|
+
verify(obj, visibility)
|
49
|
+
end
|
50
|
+
|
51
|
+
would "stub proxy with #{visibility}" do
|
52
|
+
obj = generate(visibility)
|
53
|
+
|
54
|
+
stub(obj).hello
|
55
|
+
|
56
|
+
verify(obj, visibility)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'prepend on class stub with object' do
|
62
|
+
def perform(klass, mod)
|
63
|
+
klass.prepend(mod)
|
64
|
+
klass.new
|
65
|
+
end
|
66
|
+
|
67
|
+
paste :test
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'extend on object stub with object' do
|
71
|
+
def perform(klass, mod)
|
72
|
+
obj = klass.new
|
73
|
+
obj.extend(mod)
|
74
|
+
obj
|
75
|
+
end
|
76
|
+
|
77
|
+
paste :test
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'include on singleton_class stub with object' do
|
81
|
+
def perform(klass, mod)
|
82
|
+
obj = klass.new
|
83
|
+
obj.singleton_class.include(mod)
|
84
|
+
obj
|
85
|
+
end
|
86
|
+
|
87
|
+
paste :test
|
88
|
+
end
|
89
|
+
|
90
|
+
describe 'prepend on singleton_class stub with object' do
|
91
|
+
def perform(klass, mod)
|
92
|
+
obj = klass.new
|
93
|
+
obj.singleton_class.prepend(mod)
|
94
|
+
obj
|
95
|
+
end
|
96
|
+
|
97
|
+
paste :test
|
98
|
+
end
|
99
|
+
|
100
|
+
# Brought from rspec-mocks
|
101
|
+
would "correctly restore the visibility of methods whose visibility has been tweaked on the singleton class" do
|
102
|
+
# hello is a private method when mixed in, but public on the module
|
103
|
+
# itself
|
104
|
+
mod = Module.new do
|
105
|
+
extend self
|
106
|
+
def hello; :hello; end
|
107
|
+
|
108
|
+
private :hello
|
109
|
+
class << self; public :hello; end
|
110
|
+
end
|
111
|
+
|
112
|
+
expect(mod.hello).eq :hello
|
113
|
+
|
114
|
+
stub(mod).hello{ :stub }
|
115
|
+
|
116
|
+
Muack.reset
|
117
|
+
|
118
|
+
expect(mod.hello).eq :hello
|
119
|
+
end
|
120
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lin Jen-Shin (godfat)
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |-
|
14
14
|
Muack -- A fast, small, yet powerful mocking library.
|
@@ -35,6 +35,8 @@ files:
|
|
35
35
|
- lib/muack.rb
|
36
36
|
- lib/muack/any_instance_of.rb
|
37
37
|
- lib/muack/block.rb
|
38
|
+
- lib/muack/block_26.rb
|
39
|
+
- lib/muack/block_27.rb
|
38
40
|
- lib/muack/coat.rb
|
39
41
|
- lib/muack/definition.rb
|
40
42
|
- lib/muack/error.rb
|
@@ -53,17 +55,20 @@ files:
|
|
53
55
|
- test/test_any_instance_of.rb
|
54
56
|
- test/test_coat.rb
|
55
57
|
- test/test_from_readme.rb
|
58
|
+
- test/test_keyargs.rb
|
56
59
|
- test/test_mock.rb
|
57
60
|
- test/test_modifier.rb
|
61
|
+
- test/test_prepend.rb
|
58
62
|
- test/test_proxy.rb
|
59
63
|
- test/test_satisfying.rb
|
60
64
|
- test/test_spy.rb
|
61
65
|
- test/test_stub.rb
|
66
|
+
- test/test_visibility.rb
|
62
67
|
homepage: https://github.com/godfat/muack
|
63
68
|
licenses:
|
64
|
-
- Apache
|
69
|
+
- Apache-2.0
|
65
70
|
metadata: {}
|
66
|
-
post_install_message:
|
71
|
+
post_install_message:
|
67
72
|
rdoc_options: []
|
68
73
|
require_paths:
|
69
74
|
- lib
|
@@ -78,18 +83,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
83
|
- !ruby/object:Gem::Version
|
79
84
|
version: '0'
|
80
85
|
requirements: []
|
81
|
-
|
82
|
-
|
83
|
-
signing_key:
|
86
|
+
rubygems_version: 3.1.4
|
87
|
+
signing_key:
|
84
88
|
specification_version: 4
|
85
89
|
summary: Muack -- A fast, small, yet powerful mocking library.
|
86
90
|
test_files:
|
87
91
|
- test/test_any_instance_of.rb
|
88
92
|
- test/test_coat.rb
|
89
93
|
- test/test_from_readme.rb
|
94
|
+
- test/test_keyargs.rb
|
90
95
|
- test/test_mock.rb
|
91
96
|
- test/test_modifier.rb
|
97
|
+
- test/test_prepend.rb
|
92
98
|
- test/test_proxy.rb
|
93
99
|
- test/test_satisfying.rb
|
94
100
|
- test/test_spy.rb
|
95
101
|
- test/test_stub.rb
|
102
|
+
- test/test_visibility.rb
|