diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index 0eb8392179..a66d248ff5 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -1677,6 +1677,19 @@ module Test leakchecker.check("#{inst.class}\##{inst.__name__}") + # Optionally verify GC internal consistency after each test. An + # integer >= 2 samples once every N tests (use a prime so a + # randomized test order samples a different set each run); any other + # non-empty value verifies every test (O(heap) per test, so only + # practical for small runs). + if (interval = ENV["RUBY_TEST_GC_VERIFY"]) + n = interval.to_i + @__gc_verify_tick = (@__gc_verify_tick || 0) + 1 + if n <= 1 || (@__gc_verify_tick % n).zero? + GC.verify_internal_consistency + end + end + _end_method(inst) inst._assertions