diff options
author | Koichi Sasada <ko1@atdot.net> | 2021-08-05 16:21:15 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2021-08-05 17:11:50 +0900 |
commit | 228b3e43be5e01e204751be2035fee3576a7ab74 (patch) | |
tree | 5bbffff35ee75d5e3fe597e19f50ba9b0d5967e6 /tool/lib/gc_checker.rb | |
parent | 405644f38c64dca3524e3fa32fd9722bcd2a1e0b (diff) | |
download | ruby-228b3e43be5e01e204751be2035fee3576a7ab74.tar.gz |
check GC.enable'd status
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.
Diffstat (limited to 'tool/lib/gc_checker.rb')
-rw-r--r-- | tool/lib/gc_checker.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tool/lib/gc_checker.rb b/tool/lib/gc_checker.rb new file mode 100644 index 0000000000..719da8cac0 --- /dev/null +++ b/tool/lib/gc_checker.rb @@ -0,0 +1,36 @@ +# 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'] |