summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-19 15:59:35 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-19 15:59:35 +0000
commitfa63897c6683d7e3db60b37fca787dc796a92676 (patch)
tree141311d22801550eaa92b07d19d7af9d7debda20
parent8b494b468e0015cba12cb6f70c3f225fd7fc71fb (diff)
downloadruby-fa63897c6683d7e3db60b37fca787dc796a92676.tar.gz
ruby-fa63897c6683d7e3db60b37fca787dc796a92676.tar.xz
ruby-fa63897c6683d7e3db60b37fca787dc796a92676.zip
* 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. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rwxr-xr-xbin/testrb8
-rw-r--r--lib/test/unit.rb38
-rw-r--r--test/runner.rb22
4 files changed, 57 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 7c61dbb10..87abe77f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Oct 20 00:57:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * 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@ruby-lang.org>
* common.mk (srcs): removed ID_H_TARGET.
diff --git a/bin/testrb b/bin/testrb
index cd3837f20..2e323f5cb 100755
--- a/bin/testrb
+++ b/bin/testrb
@@ -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
+}
diff --git a/lib/test/unit.rb b/lib/test/unit.rb
index b96676679..0674ad4bf 100644
--- a/lib/test/unit.rb
+++ b/lib/test/unit.rb
@@ -8,35 +8,39 @@ module Test
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 @@ module Test
end
}
- argv.concat files
-
- ARGV.replace argv
+ ARGV.replace minitest_argv
end
module Assertions
diff --git a/test/runner.rb b/test/runner.rb
index c8a06e1dd..aa7a5f8ba 100644
--- a/test/runner.rb
+++ b/test/runner.rb
@@ -2,4 +2,24 @@ require 'rbconfig'
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
+}