diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-17 01:08:04 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-17 01:08:04 +0000 |
commit | 43f3e3779cd0b163b268ff4445f4303d8d484e57 (patch) | |
tree | 88b37863b791f73a8efcde213ccbb8121e86371f /lib | |
parent | d98d3fe12a46203b056c23f50d845028e3a73a7a (diff) | |
download | ruby-43f3e3779cd0b163b268ff4445f4303d8d484e57.tar.gz |
* lib/test/unit.rb: MiniTest::Unit is different class from
Test::Unit, and install runner before loading test/minitest.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/test/unit.rb | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/lib/test/unit.rb b/lib/test/unit.rb index 4aecc49450..646fd5e3ca 100644 --- a/lib/test/unit.rb +++ b/lib/test/unit.rb @@ -9,7 +9,20 @@ module Test module Unit TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest' - def self.setup_argv(original_argv=ARGV) + module RunCount + @@run_count = 0 + + def self.have_run? + @@run_count.nonzero? + end + + def run(*) + @@run_count += 1 + super + end + end + + def self.setup_argv(original_argv=::ARGV) minitest_argv = [] files = [] reject = [] @@ -55,6 +68,12 @@ module Test reject_pat = Regexp.union(reject.map {|r| /#{r}/ }) files.reject! {|f| reject_pat =~ f } + MiniTest::Unit._install_at_exit { + next if RunCount.have_run? + next if $! # don't run if there was an exception + exit false unless run(minitest_argv) + } + files.each {|f| d = File.dirname(path = File.expand_path(f)) unless $:.include? d @@ -67,9 +86,27 @@ module Test end } - ARGV.replace minitest_argv + minitest_argv + end + + def self.run(args) + exit_code = MiniTest::Unit.new.run(args) + !exit_code || exit_code == 0 + end + + def self.start(argv=::ARGV, &block) + run(setup_argv(argv, &block)) end end end -MiniTest::Unit.autorun +class MiniTest::Unit + def self.new(*) + super.extend(Test::Unit::RunCount) + end + + def self._install_at_exit(&block) + at_exit(&block) unless @@installed_at_exit + @@installed_at_exit = true + end +end |