override_kernel 0.0.1 → 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.
- data/README +2 -2
- data/lib/override_kernel/exit.rb +1 -1
- data/lib/override_kernel/override_kernel.rb +22 -18
- data/override_kernel.gemspec +1 -1
- data/test/exit_test.rb +1 -0
- data/test/lib/test_class.rb +3 -0
- data/test/lib/test_module.rb +3 -0
- data/test/override_kernel_test.rb +97 -8
- data/test/require.rb +3 -0
- metadata +8 -4
data/README
CHANGED
@@ -23,11 +23,11 @@ Currently, only the exit function is dealt with in such a manner.
|
|
23
23
|
Simply use the following call to start brushing the exit function off like it's
|
24
24
|
a harmless pest:
|
25
25
|
|
26
|
-
start_override_exit
|
26
|
+
OverrideKernel.start_override_exit
|
27
27
|
|
28
28
|
This line will gladly put it back in your way:
|
29
29
|
|
30
|
-
stop_override_exit
|
30
|
+
OverrideKernel.stop_override_exit
|
31
31
|
|
32
32
|
You can check the state of the application by
|
33
33
|
checking OverrideKernel.override_exit.
|
data/lib/override_kernel/exit.rb
CHANGED
@@ -38,8 +38,8 @@ module Kernel
|
|
38
38
|
# (A call to exit will cause testing to stop otherwise).
|
39
39
|
alias :old_exit :exit
|
40
40
|
def exit(status = true)
|
41
|
-
old_exit(status) unless OverrideKernel.override_exit
|
42
41
|
OverrideKernel::AppState.state = :dead
|
42
|
+
old_exit(status) unless OverrideKernel.override_exit
|
43
43
|
return status
|
44
44
|
end
|
45
45
|
end
|
@@ -35,26 +35,12 @@
|
|
35
35
|
|
36
36
|
module OverrideKernel
|
37
37
|
|
38
|
-
# Contains a list of methods that will be dynamically handled by the module.
|
39
|
-
# The following methods will be created:
|
40
|
-
#
|
41
|
-
# :start_#{method_name} #=> @method_name = true
|
42
|
-
# :stop_#{method_name} #=> @method_name = false
|
43
|
-
# :#{method_name} #=> Returns the value of @method_name
|
44
|
-
METHOD_LIST = [
|
45
|
-
'override_exit',
|
46
|
-
]
|
47
|
-
|
48
38
|
# This constant is used to indicate whether the application would have
|
49
39
|
# been halted by Kernel functions.
|
50
40
|
AppState = StateManager.new(:alive, [:alive, :dead])
|
51
41
|
|
52
|
-
|
53
|
-
|
54
|
-
############################################################################
|
55
|
-
|
56
|
-
def method_missing(method, *args, &block)
|
57
|
-
if METHOD_LIST.include?(method.to_s.sub(/^(start|stop)_/, ''))
|
42
|
+
def self.method_missing(method, *args, &block)
|
43
|
+
if method_list.include?(method.to_s.sub(/^(start|stop)_/, '').to_sym)
|
58
44
|
var = '@' + method.to_s.sub(/^(start|stop)_/, '')
|
59
45
|
case method.to_s
|
60
46
|
when /^start/
|
@@ -62,6 +48,7 @@ module OverrideKernel
|
|
62
48
|
when /^stop/
|
63
49
|
send :instance_variable_set, var.to_sym, false
|
64
50
|
when var[1..-1]
|
51
|
+
return nil unless instance_variables.include?(var.to_sym)
|
65
52
|
send :instance_variable_get, var.to_sym
|
66
53
|
end
|
67
54
|
else
|
@@ -69,11 +56,28 @@ module OverrideKernel
|
|
69
56
|
end
|
70
57
|
end
|
71
58
|
|
72
|
-
def respond_to_missing?(method, include_private)
|
73
|
-
if
|
59
|
+
def self.respond_to_missing?(method, include_private)
|
60
|
+
if method_list.include?(method.to_s.sub(/^(start|stop)_/, '').to_sym)
|
74
61
|
return true
|
75
62
|
else
|
76
63
|
super
|
77
64
|
end
|
78
65
|
end
|
66
|
+
|
67
|
+
class << self
|
68
|
+
private
|
69
|
+
# Returns a list of methods that will be dynamically handled by the module.
|
70
|
+
# The following methods will be created:
|
71
|
+
#
|
72
|
+
# :start_#{method_name} #=> @method_name = true
|
73
|
+
# :stop_#{method_name} #=> @method_name = false
|
74
|
+
# :#{method_name} #=> Returns the value of @method_name
|
75
|
+
# ==== Output
|
76
|
+
# [Array] An array of base method names.
|
77
|
+
def method_list
|
78
|
+
[
|
79
|
+
:override_exit,
|
80
|
+
]
|
81
|
+
end
|
82
|
+
end
|
79
83
|
end
|
data/override_kernel.gemspec
CHANGED
data/test/exit_test.rb
CHANGED
@@ -33,21 +33,110 @@
|
|
33
33
|
require_relative 'require'
|
34
34
|
|
35
35
|
class OverrideKernelTest < Test::Unit::TestCase
|
36
|
-
|
37
|
-
:override_exit,
|
38
|
-
|
36
|
+
ITEMS = {
|
37
|
+
:method_list => [:override_exit,],
|
38
|
+
:constants => {
|
39
|
+
:AppState => StateManager.new(:alive, [:alive, :dead]),
|
40
|
+
},
|
41
|
+
}
|
42
|
+
|
43
|
+
def setup
|
44
|
+
@module = OverrideKernel
|
45
|
+
@module.instance_eval do
|
46
|
+
instance_variables.each do |var|
|
47
|
+
remove_instance_variable var
|
48
|
+
end
|
49
|
+
end
|
50
|
+
super
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_constants
|
54
|
+
ITEMS[:constants].each_key do |constant|
|
55
|
+
assert_equal strip_id(ITEMS[:constants][constant]),
|
56
|
+
strip_id(@module.const_get(constant))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_method_list
|
61
|
+
assert_equal ITEMS[:method_list], @module.send(:method_list)
|
62
|
+
end
|
39
63
|
|
40
64
|
def test_all_methods
|
41
|
-
|
65
|
+
ITEMS[:method_list].each do |method|
|
66
|
+
assert_equal nil, @module.send(method)
|
67
|
+
|
42
68
|
{
|
43
69
|
"start_#{method}".to_sym => true,
|
44
70
|
"stop_#{method}".to_sym => false,
|
45
71
|
}.each do |method_name, value|
|
46
|
-
assert_respond_to
|
47
|
-
assert_nothing_raised {
|
48
|
-
assert_respond_to
|
49
|
-
assert_equal value,
|
72
|
+
assert_respond_to @module, method_name
|
73
|
+
assert_nothing_raised { @module.send method_name }
|
74
|
+
assert_respond_to @module, method
|
75
|
+
assert_equal value, @module.send(method)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
assert_no_response @module, :method_list, false
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_module_include
|
83
|
+
ITEMS[:method_list].each do |method|
|
84
|
+
assert_no_response TestModule, method
|
85
|
+
|
86
|
+
[
|
87
|
+
"start_#{method}".to_sym,
|
88
|
+
"stop_#{method}".to_sym,
|
89
|
+
].each do |meth|
|
90
|
+
assert_no_response TestModule, meth
|
50
91
|
end
|
51
92
|
end
|
93
|
+
|
94
|
+
ITEMS[:constants].each_key do |constant|
|
95
|
+
assert_equal strip_id(ITEMS[:constants][constant]),
|
96
|
+
strip_id(TestModule.const_get(constant))
|
97
|
+
end
|
98
|
+
|
99
|
+
assert_no_response TestModule, :method_list
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_class_include
|
103
|
+
obj = TestClass.new
|
104
|
+
ITEMS[:method_list].each do |method|
|
105
|
+
assert_no_response TestClass, method
|
106
|
+
assert_no_response obj, method
|
107
|
+
|
108
|
+
[
|
109
|
+
"start_#{method}".to_sym,
|
110
|
+
"stop_#{method}".to_sym,
|
111
|
+
].each do |meth|
|
112
|
+
assert_no_response TestClass, meth
|
113
|
+
assert_no_response obj, meth
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
ITEMS[:constants].each_key do |constant|
|
118
|
+
assert_equal strip_id(ITEMS[:constants][constant]),
|
119
|
+
strip_id(TestClass.const_get(constant))
|
120
|
+
end
|
121
|
+
|
122
|
+
assert_no_response TestClass, :method_list
|
123
|
+
assert_no_response obj, :method_list
|
124
|
+
end
|
125
|
+
|
126
|
+
############################################################################
|
127
|
+
private
|
128
|
+
############################################################################
|
129
|
+
|
130
|
+
def strip_id(object)
|
131
|
+
return object unless object.respond_to?(:pretty_inspect) &&
|
132
|
+
object.pretty_inspect.match(/^#</)
|
133
|
+
object.pretty_inspect.sub(/:\w+? /, ' ')
|
134
|
+
end
|
135
|
+
|
136
|
+
def assert_no_response(obj, method, include_private = true, msg = nil)
|
137
|
+
msg = message(msg) {
|
138
|
+
"Did not expect #{mu_pp(obj)} (#{obj.class}) to respond to ##{method}"
|
139
|
+
}
|
140
|
+
assert !obj.respond_to?(method, include_private), msg
|
52
141
|
end
|
53
142
|
end
|
data/test/require.rb
CHANGED
metadata
CHANGED
@@ -3,10 +3,10 @@ name: override_kernel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
|
+
- 1
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.1
|
9
|
+
version: 1.0.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Travis Herrick
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08-
|
17
|
+
date: 2011-08-15 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -68,6 +68,8 @@ files:
|
|
68
68
|
- rakefile
|
69
69
|
- README
|
70
70
|
- test/override_kernel_test.rb
|
71
|
+
- test/lib/test_module.rb
|
72
|
+
- test/lib/test_class.rb
|
71
73
|
- test/require.rb
|
72
74
|
- test/exit_test.rb
|
73
75
|
has_rdoc: true
|
@@ -84,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
86
|
requirements:
|
85
87
|
- - ">="
|
86
88
|
- !ruby/object:Gem::Version
|
87
|
-
hash: -
|
89
|
+
hash: -1613111938212231117
|
88
90
|
segments:
|
89
91
|
- 0
|
90
92
|
version: "0"
|
@@ -105,5 +107,7 @@ specification_version: 3
|
|
105
107
|
summary: Overrides specific Kernel functions.
|
106
108
|
test_files:
|
107
109
|
- test/override_kernel_test.rb
|
110
|
+
- test/lib/test_module.rb
|
111
|
+
- test/lib/test_class.rb
|
108
112
|
- test/require.rb
|
109
113
|
- test/exit_test.rb
|