diff options
Diffstat (limited to 'tool/lib')
-rw-r--r-- | tool/lib/gc_checker.rb | 36 | ||||
-rw-r--r-- | tool/lib/gc_compact_checker.rb | 10 | ||||
-rw-r--r-- | tool/lib/test/unit/parallel.rb | 2 |
3 files changed, 37 insertions, 11 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'] diff --git a/tool/lib/gc_compact_checker.rb b/tool/lib/gc_compact_checker.rb deleted file mode 100644 index a6ef3d3ce8..0000000000 --- a/tool/lib/gc_compact_checker.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -module GCCompactChecker - def after_teardown - super - GC.compact - end -end - -Test::Unit::TestCase.include GCCompactChecker if ENV['RUBY_TEST_GC_COMPACT'] diff --git a/tool/lib/test/unit/parallel.rb b/tool/lib/test/unit/parallel.rb index ccaf1a913a..0807b3916b 100644 --- a/tool/lib/test/unit/parallel.rb +++ b/tool/lib/test/unit/parallel.rb @@ -6,7 +6,7 @@ require "profile_test_all" if ENV.key?('RUBY_TEST_ALL_PROFILE') require "tracepointchecker" require "zombie_hunter" require "iseq_loader_checker" -require "gc_compact_checker" +require "gc_checker" module Test module Unit |