From 994bb6d36d8717f7566fd6e953d629b6e2c30926 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 12 Dec 2013 06:17:23 +0000 Subject: test_weakref.rb: use single level WeakRef * test/test_weakref.rb (make_weakref): return single level WeakRef, instead of multiple level, since the second level object may be still alive even after the final object get finalized, in test_recycled. * test/test_weakref.rb (test_ref): move living object assertions from test_recycled. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/test_weakref.rb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'test/test_weakref.rb') diff --git a/test/test_weakref.rb b/test/test_weakref.rb index 27a8499615..85820b17b8 100644 --- a/test/test_weakref.rb +++ b/test/test_weakref.rb @@ -4,21 +4,22 @@ require_relative './ruby/envutil' class TestWeakRef < Test::Unit::TestCase def make_weakref(level = 10) - obj = Object.new - str = obj.to_s - level.times {obj = WeakRef.new(obj)} - return WeakRef.new(obj), str + if level > 0 + make_weakref(level - 1) + else + WeakRef.new(Object.new) + end end def test_ref - weak, str = make_weakref - assert_equal(str, weak.to_s) + obj = Object.new + weak = WeakRef.new(obj) + assert_equal(obj.to_s, weak.to_s) + assert_predicate(weak, :weakref_alive?) end def test_recycled - weak, str = make_weakref - assert_nothing_raised(WeakRef::RefError) {weak.to_s} - assert_predicate(weak, :weakref_alive?) + weak = make_weakref ObjectSpace.garbage_collect ObjectSpace.garbage_collect assert_raise(WeakRef::RefError) {weak.to_s} -- cgit v1.2.3