aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/library/weakref/fixtures/classes.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/weakref/fixtures/classes.rb')
-rw-r--r--spec/ruby/library/weakref/fixtures/classes.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/ruby/library/weakref/fixtures/classes.rb b/spec/ruby/library/weakref/fixtures/classes.rb
new file mode 100644
index 0000000000..560c58b041
--- /dev/null
+++ b/spec/ruby/library/weakref/fixtures/classes.rb
@@ -0,0 +1,24 @@
+require 'weakref'
+
+# From MRI test_weakref.rb
+class WeakRefSpec
+ def self.make_weakref(level = 10)
+ if level > 0
+ make_weakref(level - 1)
+ else
+ WeakRef.new(Object.new)
+ end
+ end
+
+ def self.make_dead_weakref
+ weaks = []
+ weak = nil
+ 10_000.times do
+ weaks << make_weakref
+ GC.start
+ GC.start
+ break if weak = weaks.find { |w| !w.weakref_alive? }
+ end
+ weak
+ end
+end