diff options
-rw-r--r-- | tool/lib/test/unit.rb | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index 928c896865..42d1d83442 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -922,13 +922,16 @@ module Test end end - module GCStressOption # :nodoc: all + module GCOption # :nodoc: all def setup_options(parser, options) super parser.separator "GC options:" parser.on '--[no-]gc-stress', 'Set GC.stress as true' do |flag| options[:gc_stress] = flag end + parser.on '--[no-]gc-compact', 'GC.compact every time' do |flag| + options[:gc_compact] = flag + end end def non_options(files, options) @@ -945,6 +948,18 @@ module Test end end end + if options.delete(:gc_compact) + MiniTest::Unit::TestCase.class_eval do + oldrun = instance_method(:run) + define_method(:run) do |runner| + begin + oldrun.bind_call(self, runner) + ensure + GC.compact + end + end + end + end super end end @@ -1080,7 +1095,7 @@ module Test include Test::Unit::GlobOption include Test::Unit::RepeatOption include Test::Unit::LoadPathOption - include Test::Unit::GCStressOption + include Test::Unit::GCOption include Test::Unit::ExcludesOption include Test::Unit::TimeoutOption include Test::Unit::RunCount |