summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-02-12 00:42:37 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-02-12 00:42:37 +0000
commit7d86051f256eac912e47a205c8e6d6125141a188 (patch)
tree7617b3309e56581b1e051181efa4c8a8a7007bc9 /test
parent16c364121b8fe725087dadad8c19f45a4eddc958 (diff)
merge revision(s) 32527,32567: [Backport #6004]
* vm_method.c (rb_add_method): should not call method_added hook for undef operation. [Bug #5015] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_module.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb
index 3258259cf7..198fcee978 100644
--- a/test/ruby/test_module.rb
+++ b/test/ruby/test_module.rb
@@ -894,6 +894,64 @@ class TestModule < Test::Unit::TestCase
assert_equal mod.instance_method(:a=), memo.shift
end
+ def test_method_undefined
+ added = []
+ undefed = []
+ removed = []
+ mod = Module.new do
+ mod = self
+ def f
+ end
+ (class << self ; self ; end).class_eval do
+ define_method :method_added do |sym|
+ added << sym
+ end
+ define_method :method_undefined do |sym|
+ undefed << sym
+ end
+ define_method :method_removed do |sym|
+ removed << sym
+ end
+ end
+ end
+ assert_method_defined?(mod, :f)
+ mod.module_eval do
+ undef :f
+ end
+ assert_equal [], added
+ assert_equal [:f], undefed
+ assert_equal [], removed
+ end
+
+ def test_method_removed
+ added = []
+ undefed = []
+ removed = []
+ mod = Module.new do
+ mod = self
+ def f
+ end
+ (class << self ; self ; end).class_eval do
+ define_method :method_added do |sym|
+ added << sym
+ end
+ define_method :method_undefined do |sym|
+ undefed << sym
+ end
+ define_method :method_removed do |sym|
+ removed << sym
+ end
+ end
+ end
+ assert_method_defined?(mod, :f)
+ mod.module_eval do
+ remove_method :f
+ end
+ assert_equal [], added
+ assert_equal [], undefed
+ assert_equal [:f], removed
+ end
+
def test_method_redefinition
feature2155 = '[ruby-dev:39400]'