ruby-changes:16659
From: nobu <ko1@a...>
Date: Fri, 16 Jul 2010 14:58:56 +0900 (JST)
Subject: [ruby-changes:16659] Ruby:r28655 (trunk): * lib/test/unit.rb (Test::Unit.setup_argv): run tests only when
nobu 2010-07-16 14:58:39 +0900 (Fri, 16 Jul 2010) New Revision: 28655 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28655 Log: * lib/test/unit.rb (Test::Unit.setup_argv): run tests only when any tests have not run. * bin/testrb, test/runner.rb: use Test::Unit.start. Modified files: trunk/ChangeLog trunk/bin/testrb trunk/lib/test/unit.rb trunk/test/runner.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 28654) +++ ChangeLog (revision 28655) @@ -1,3 +1,10 @@ +Fri Jul 16 14:58:38 2010 Nobuyoshi Nakada <nobu@r...> + + * lib/test/unit.rb (Test::Unit.setup_argv): run tests only when + any tests have not run. + + * bin/testrb, test/runner.rb: use Test::Unit.start. + Fri Jul 16 12:06:08 2010 Nobuyoshi Nakada <nobu@r...> * tool/rbinstall.rb (ext-arch): prune directories start with '-'. Index: lib/test/unit.rb =================================================================== --- lib/test/unit.rb (revision 28654) +++ lib/test/unit.rb (revision 28655) @@ -9,7 +9,21 @@ module Unit TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest' - def self.setup_argv(original_argv=ARGV) + @@installed_at_exit = true + @@run_count = 0 + + RunCount = Module.new do + def run(*) + @@run_count += 1 + super + end + end + + def self.new(*) + super.extend(RunCount) + end + + def self.setup_argv(original_argv=::ARGV) minitest_argv = [] files = [] reject = [] @@ -67,9 +81,23 @@ end } - ARGV.replace minitest_argv + at_exit { + next if @@run_count.nonzero? + next if $! # don't run if there was an exception + exit false unless run(minitest_argv) + } unless @@installed_at_exit + @@installed_at_exit = true + + 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 Index: bin/testrb =================================================================== --- bin/testrb (revision 28654) +++ bin/testrb (revision 28655) @@ -1,9 +1,9 @@ #!/usr/bin/env ruby require 'test/unit' -Test::Unit.setup_argv {|files| +exit Test::Unit.start {|files| if files.empty? puts "Usage: testrb [options] tests..." - exit 1 + exit false end if files.size == 1 $0 = File.basename(files[0]) Index: test/runner.rb =================================================================== --- test/runner.rb (revision 28654) +++ test/runner.rb (revision 28655) @@ -6,7 +6,7 @@ src_testdir = File.dirname(File.expand_path(__FILE__)) srcdir = File.dirname(src_testdir) -Test::Unit.setup_argv {|files| +exit Test::Unit.start {|files| if files.empty? [src_testdir] else -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/