From 55cf24d3789486328e9a2ea734f42fb9122056e9 Mon Sep 17 00:00:00 2001 From: shugo Date: Thu, 23 Aug 2012 04:00:25 +0000 Subject: * insns.def (invokesuper): reverted r36640 partially to make super in a thread work correctly. [ruby-core:47284] [Bug #6907] * test/ruby/test_super.rb: related test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_super.rb | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'test/ruby/test_super.rb') diff --git a/test/ruby/test_super.rb b/test/ruby/test_super.rb index 7208b362fc..dcd700858c 100644 --- a/test/ruby/test_super.rb +++ b/test/ruby/test_super.rb @@ -264,7 +264,9 @@ class TestSuper < Test::Unit::TestCase end } obj = sub_class.new - assert_equal [:super, obj], obj.foo + assert_raise(NotImplementedError) do + obj.foo + end end def test_super_in_instance_eval_with_define_method @@ -282,7 +284,9 @@ class TestSuper < Test::Unit::TestCase end } obj = sub_class.new - assert_equal [:super, obj], obj.foo + assert_raise(NotImplementedError) do + obj.foo + end end def test_super_in_orphan_block @@ -298,9 +302,7 @@ class TestSuper < Test::Unit::TestCase end } obj = sub_class.new - assert_raise(NoMethodError) do - obj.foo.call - end + assert_equal([:super, obj], obj.foo.call) end def test_super_in_orphan_block_with_instance_eval @@ -318,7 +320,7 @@ class TestSuper < Test::Unit::TestCase end } obj = sub_class.new - assert_raise(NoMethodError) do + assert_raise(NotImplementedError) do obj.foo.call end end @@ -334,4 +336,15 @@ class TestSuper < Test::Unit::TestCase } assert_equal 'hi', y.hello end + + def test_super_in_thread + hoge = Class.new { + def bar; 'hoge'; end + } + foo = Class.new(hoge) { + def bar; Thread.new { super }.join.value; end + } + + assert_equal 'hoge', foo.new.bar + end end -- cgit v1.2.3