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

ruby-changes:8322

From: akr <ko1@a...>
Date: Mon, 20 Oct 2008 00:59:55 +0900 (JST)
Subject: [ruby-changes:8322] Ruby:r19849 (trunk): * lib/test/unit.rb (Test::Unit.setup_argv): call given block for

akr	2008-10-20 00:59:35 +0900 (Mon, 20 Oct 2008)

  New Revision: 19849

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19849

  Log:
    * lib/test/unit.rb (Test::Unit.setup_argv): call given block for
      filtering files.
    
    * test/runner.rb: search srcdir/test/arg, srcdir/arg.
    
    * bin/testrb: show usage if no files given.

  Modified files:
    trunk/ChangeLog
    trunk/bin/testrb
    trunk/lib/test/unit.rb
    trunk/test/runner.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19848)
+++ ChangeLog	(revision 19849)
@@ -1,3 +1,12 @@
+Mon Oct 20 00:57:04 2008  Tanaka Akira  <akr@f...>
+
+	* lib/test/unit.rb (Test::Unit.setup_argv): call given block for
+	  filtering files.
+
+	* test/runner.rb: search srcdir/test/arg, srcdir/arg.
+
+	* bin/testrb: show usage if no files given.
+	
 Sun Oct 19 21:19:16 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* common.mk (srcs): removed ID_H_TARGET.
Index: lib/test/unit.rb
===================================================================
--- lib/test/unit.rb	(revision 19848)
+++ lib/test/unit.rb	(revision 19849)
@@ -8,35 +8,39 @@
     TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest'
 
     def self.setup_argv(original_argv=ARGV)
-      argv = []
-      files = nil
+      minitest_argv = []
+      files = []
       reject = []
       original_argv = original_argv.dup
       while arg = original_argv.shift
         case arg
         when '-v'
-          argv << '-v'
+          minitest_argv << '-v'
         when '-n', '--name'
-          argv << arg
-          argv << original_argv.shift
+          minitest_argv << arg
+          minitest_argv << original_argv.shift
         when '-x'
           reject << original_argv.shift
         else
-          files ||= []
-          if File.directory? arg
-            files.concat Dir["#{arg}/**/test_*.rb"]
-          elsif File.file? arg
-            files << arg
-          else
-            raise ArgumentError, "file not found: #{arg}"
-          end
+          files << arg
         end
       end
 
-      if files == nil
-        files = Dir["test/**/test_*.rb"]
+      if block_given?
+        files = yield files
       end
 
+      files.map! {|f|
+        if File.directory? f
+          Dir["#{f}/**/test_*.rb"]
+        elsif File.file? f
+          f
+        else
+          raise ArgumentError, "file not found: #{f}"
+        end
+      }
+      files.flatten!
+
       reject_pat = Regexp.union(reject.map {|r| /#{r}/ })
       files.reject! {|f| reject_pat =~ f }
         
@@ -52,9 +56,7 @@
         end
       }
 
-      argv.concat files
-
-      ARGV.replace argv
+      ARGV.replace minitest_argv
     end
 
     module Assertions
Index: bin/testrb
===================================================================
--- bin/testrb	(revision 19848)
+++ bin/testrb	(revision 19849)
@@ -1,3 +1,9 @@
 #!/usr/bin/env ruby
 require 'test/unit'
-Test::Unit.setup_argv
+Test::Unit.setup_argv {|files|
+  if files.empty?
+    puts "Usage: testrb [options] tests..."
+    exit 1
+  end
+  files
+}
Index: test/runner.rb
===================================================================
--- test/runner.rb	(revision 19848)
+++ test/runner.rb	(revision 19849)
@@ -2,4 +2,24 @@
 exit if CROSS_COMPILING
 
 require 'test/unit'
-Test::Unit.setup_argv
+
+src_testdir = File.dirname(File.expand_path(__FILE__))
+srcdir = File.dirname(src_testdir)
+
+Test::Unit.setup_argv {|files|
+  if files.empty?
+    [src_testdir]
+  else
+    files.map {|f|
+      if File.exist? f
+        f
+      elsif File.exist? "#{src_testdir}/#{f}"
+        "#{src_testdir}/#{f}"
+      elsif File.exist? "#{srcdir}/#{f}"
+        "#{srcdir}/#{f}"
+      else
+        raise ArgumentError, "not found: #{f}"
+      end
+    }
+  end
+}

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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