aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tool/lib/test/unit.rb19
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