diff options
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_class.rb | 9 | ||||
-rw-r--r-- | test/ruby/test_module.rb | 12 |
2 files changed, 21 insertions, 0 deletions
diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 8d9fde144e..5086e60398 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -809,4 +809,13 @@ PREP 3_000_000.times(&code) CODE end + + def test_instance_freeze_dont_freeze_the_class_bug_19164 + klass = Class.new + klass.prepend(Module.new) + + klass.new.freeze + klass.define_method(:bar) {} + assert_equal klass, klass.remove_method(:bar), '[Bug #19164]' + end end diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 981c1394a2..6c4defd6b1 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -2350,6 +2350,18 @@ class TestModule < Test::Unit::TestCase assert_equal(:foo, removed) end + def test_frozen_prepend_remove_method + [Module, Class].each do |klass| + mod = klass.new do + prepend(Module.new) + def foo; end + end + mod.freeze + assert_raise(FrozenError, '[Bug #19166]') { mod.send(:remove_method, :foo) } + assert_equal([:foo], mod.instance_methods(false)) + end + end + def test_prepend_class_ancestors bug6658 = '[ruby-core:45919]' m = labeled_module("m") |