diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fiber/test_thread.rb | 6 | ||||
| -rw-r--r-- | test/ruby/test_defined.rb | 28 |
2 files changed, 33 insertions, 1 deletions
diff --git a/test/fiber/test_thread.rb b/test/fiber/test_thread.rb index 0247f330d9..4d2fbde9ed 100644 --- a/test/fiber/test_thread.rb +++ b/test/fiber/test_thread.rb @@ -156,16 +156,20 @@ class TestFiberThread < Test::Unit::TestCase end def test_thread_join_hang + inner = nil thread = Thread.new do scheduler = SleepingUnblockScheduler.new Fiber.set_scheduler scheduler Fiber.schedule do - Thread.new{sleep(0.01)}.value + inner = Thread.new{sleep(0.01)} + inner.value end end thread.join + ensure + inner&.join end end diff --git a/test/ruby/test_defined.rb b/test/ruby/test_defined.rb index db1fdc8e25..75ed1a7534 100644 --- a/test/ruby/test_defined.rb +++ b/test/ruby/test_defined.rb @@ -62,6 +62,34 @@ class TestDefined < Test::Unit::TestCase f.bar(Class.new(Foo).new) { |v| assert(v, "inherited protected method") } end + module ProtectedInModule + def m + :m + end + protected :m + def call_m(o) + o.m + end + def defined_m(o) + defined?(o.m) + end + end + class ProtectedIncluderA + include ProtectedInModule + end + class ProtectedIncluderB + include ProtectedInModule + end + + def test_defined_protected_method_in_included_module + a = ProtectedIncluderA.new + b = ProtectedIncluderB.new + assert_equal(:m, a.call_m(a)) + assert_equal(:m, a.call_m(b)) + assert_equal("method", a.defined_m(a)) + assert_equal("method", a.defined_m(b)) + end + def test_defined_undefined_method f = Foo.new assert_nil(defined?(f.quux)) # undefined method |
