diff options
Diffstat (limited to 'spec/ruby/library/weakref/fixtures/classes.rb')
-rw-r--r-- | spec/ruby/library/weakref/fixtures/classes.rb | 24 |
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 |