summaryrefslogtreecommitdiff
path: root/tool/lib/gc_checker.rb
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-08-05 16:21:15 +0900
committerKoichi Sasada <ko1@atdot.net>2021-08-05 17:11:50 +0900
commit228b3e43be5e01e204751be2035fee3576a7ab74 (patch)
tree5bbffff35ee75d5e3fe597e19f50ba9b0d5967e6 /tool/lib/gc_checker.rb
parent405644f38c64dca3524e3fa32fd9722bcd2a1e0b (diff)
downloadruby-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.rb36
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']