mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
228b3e43be
Check GC.enable'd status before and after test execution. Write this checker in gc_checker.rb, it was renamed from gc_compact_checker.rb.
36 lines
710 B
Ruby
36 lines
710 B
Ruby
# frozen_string_literal: true
|
|
|
|
module GCDisabledChecker
|
|
def before_setup
|
|
if @__gc_disabled__ = GC.enable # return true if GC is disabled
|
|
GC.disable
|
|
end
|
|
|
|
super
|
|
end
|
|
|
|
def after_teardown
|
|
super
|
|
|
|
disabled = GC.enable
|
|
GC.disable if @__gc_disabled__
|
|
|
|
if @__gc_disabled__ != disabled
|
|
label = {
|
|
true => 'disabled',
|
|
false => 'enabled',
|
|
}
|
|
raise "GC was #{label[@__gc_disabled__]}, but is #{label[disabled]} after the test."
|
|
end
|
|
end
|
|
end
|
|
|
|
module GCCompactChecker
|
|
def after_teardown
|
|
super
|
|
GC.compact
|
|
end
|
|
end
|
|
|
|
Test::Unit::TestCase.include GCDisabledChecker
|
|
Test::Unit::TestCase.include GCCompactChecker if ENV['RUBY_TEST_GC_COMPACT']
|