summaryrefslogtreecommitdiff
path: root/test/ruby/test_objectspace.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_objectspace.rb')
-rw-r--r--test/ruby/test_objectspace.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/ruby/test_objectspace.rb b/test/ruby/test_objectspace.rb
index 3127b61abe..c96f973895 100644
--- a/test/ruby/test_objectspace.rb
+++ b/test/ruby/test_objectspace.rb
@@ -64,6 +64,27 @@ End
!b
END
assert_raise(ArgumentError) { ObjectSpace.define_finalizer([], Object.new) }
+ fin = Struct.new(:garbage).new
+ class << fin
+ alias call garbage=
+ end
+ assertion = proc do
+ fin.garbage = nil
+ assert_nothing_raised(ArgumentError) {
+ EnvUtil.under_gc_stress do
+ 3.times do
+ ObjectSpace.define_finalizer([], fin)
+ end
+ GC.start
+ end
+ }
+ assert_not_nil(fin.garbage)
+ end
+ assertion.call
+ class << fin
+ private :call
+ end
+ assertion.call
end
def test_each_object