test-redef 1.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/test/redef.rb +3 -3
- data/test/redef.rb +16 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1d0499975b9a3b2197b73ed016e48ebb72b9744
|
4
|
+
data.tar.gz: d19562cb49b2e12237c1de3e712c49aeb237a54b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32c1c58a46fc75081e524c1967884d97e8f24d19440ad4cfc2fd960f20911e327511f97413ed48286f84229c47d73c06e86f46ef4f5b01c2fb50d089be034b6
|
7
|
+
data.tar.gz: f3713d6511c5248cf769d6fc308d796decc358319b0395e6a9c63c4d75c0b0dc764b62f18b59ce2dae9aeeecbbf67f737dd595895ee3369be97b0e09be2bbe11
|
data/lib/test/redef.rb
CHANGED
@@ -33,10 +33,10 @@ class Test::Redef
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.publicize_method(*methods)
|
36
|
-
orig_access_level = {}
|
37
36
|
method_syms = []
|
38
37
|
methods.each do |class_method_name|
|
39
38
|
klass, method_name = parse_class_and_method(class_method_name)
|
39
|
+
next if klass.public_instance_methods.include?(method_name)
|
40
40
|
method_syms << [klass, method_name]
|
41
41
|
klass.send(:public, method_name)
|
42
42
|
end
|
@@ -81,7 +81,7 @@ class Test::Redef
|
|
81
81
|
def [](method_name)
|
82
82
|
c = Class.new
|
83
83
|
c.instance_exec(self, method_name) do |rs, rs_method_name|
|
84
|
-
[:called, :args, :object, :reset].each do |method|
|
84
|
+
[:called, :args, :object, :reset, :called?].each do |method|
|
85
85
|
define_method(method) { rs.__send__(method, rs_method_name) }
|
86
86
|
end
|
87
87
|
end
|
@@ -180,7 +180,7 @@ class Test::Redef
|
|
180
180
|
klass.__send__(:alias_method, hider, method_name)
|
181
181
|
real_redef_method_name = "__redef_new_method_#{@@redef_next_id}"
|
182
182
|
temporary_methods << [klass, real_redef_method_name]
|
183
|
-
@@redef_next_id += 1
|
183
|
+
@@redef_next_id += 1
|
184
184
|
klass.__send__(:define_method, real_redef_method_name, method)
|
185
185
|
arity = method.arity
|
186
186
|
|
data/test/redef.rb
CHANGED
@@ -137,6 +137,7 @@ class RedefTest < Test::Unit::TestCase
|
|
137
137
|
assert_equal( [["pacifies-empiricism\'s"]], rd['TestClass#test_method'].args )
|
138
138
|
|
139
139
|
assert_equal( 1, rd[:class_method].called )
|
140
|
+
assert( rd[:class_method].called? )
|
140
141
|
assert_equal( [[]], rd[:class_method].args )
|
141
142
|
end
|
142
143
|
end
|
@@ -152,6 +153,8 @@ class RedefTest < Test::Unit::TestCase
|
|
152
153
|
assert_equal( 0, rd['TestClass#both_class_and_instance'].called )
|
153
154
|
assert_equal( 0, rd['TestClass.both_class_and_instance'].called )
|
154
155
|
|
156
|
+
assert( !rd['TestClass#both_class_and_instance'].called? )
|
157
|
+
assert( !rd['TestClass.both_class_and_instance'].called? )
|
155
158
|
|
156
159
|
assert_equal( 'new_instance', a.both_class_and_instance )
|
157
160
|
assert_equal( 'new_class', TestClass.both_class_and_instance )
|
@@ -208,13 +211,25 @@ class RedefTest < Test::Unit::TestCase
|
|
208
211
|
assert_raises( NoMethodError ) do
|
209
212
|
a.private_method
|
210
213
|
end
|
211
|
-
Test::Redef.publicize_method(
|
214
|
+
Test::Redef.publicize_method(
|
215
|
+
'TestClass#private_method',
|
216
|
+
'TestClass.private_class_method',
|
217
|
+
'TestClass#test_method',
|
218
|
+
'TestClass.class_method',
|
219
|
+
) do
|
212
220
|
assert_equal( 'orig private method', a.private_method )
|
213
221
|
assert_equal( 'bolero-mute', TestClass.private_class_method )
|
222
|
+
assert_equal( 'orig', a.test_method )
|
223
|
+
assert_equal( 'orig', TestClass.class_method )
|
214
224
|
end
|
225
|
+
|
215
226
|
assert_raises( NoMethodError ) do
|
216
227
|
a.private_method
|
217
228
|
end
|
229
|
+
|
230
|
+
# don't privatize methods that were public
|
231
|
+
assert_equal( 'orig', a.test_method )
|
232
|
+
assert_equal( 'orig', TestClass.class_method )
|
218
233
|
end
|
219
234
|
|
220
235
|
# this sometimes seems like a good idea, but can lead to subtle bugs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-redef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- RetailNext
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Replace methods with test code, get feedback on how they are called and
|
14
14
|
put it all back together when your test is done.
|
@@ -21,7 +21,7 @@ files:
|
|
21
21
|
- Rakefile
|
22
22
|
- lib/test/redef.rb
|
23
23
|
- test/redef.rb
|
24
|
-
homepage: http://github.com/
|
24
|
+
homepage: http://github.com/retailnext/test-redef
|
25
25
|
licenses:
|
26
26
|
- MIT
|
27
27
|
metadata: {}
|
@@ -31,18 +31,18 @@ require_paths:
|
|
31
31
|
- lib
|
32
32
|
required_ruby_version: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 1.9.2
|
37
37
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
requirements: []
|
43
43
|
rubyforge_project:
|
44
|
-
rubygems_version: 2.
|
44
|
+
rubygems_version: 2.2.2
|
45
45
|
signing_key:
|
46
46
|
specification_version: 4
|
47
|
-
summary:
|
47
|
+
summary: Scoped and logged monkey patching for unit tests
|
48
48
|
test_files: []
|