[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]