はじめまして、野口と申します。

testrbで実行するテストスクリプト内でコマンドラインオプションを使おうと
思い、testrbの'--'オプションを利用したのですが、以下のように
LoadErrorになってしまいます。

$ ruby -vS testrb test_foo.rb -- -f
ruby 1.8.4 (2006-01-19) [i386-freebsd5.3]
/home/ruby/test/test_foo.rb:-f option specified.
/home/ruby/local/lib/ruby/1.8/test/unit/collector/dir.rb:83:in `require': no such file to load -- -f (LoadError)
        from /home/ruby/local/lib/ruby/1.8/test/unit/collector/dir.rb:83:in `collect_file'
        from /home/ruby/local/lib/ruby/1.8/test/unit/collector/dir.rb:70:in `recursive_collect'
        from /home/ruby/local/lib/ruby/1.8/test/unit/collector/dir.rb:30:in `collect'
        from /home/ruby/local/lib/ruby/1.8/test/unit/collector/dir.rb:29:in `collect'
        from /home/ruby/local/lib/ruby/1.8/test/unit/autorunner.rb:67
        from /home/ruby/local/lib/ruby/1.8/test/unit/autorunner.rb:198:in `run'
        from /home/ruby/local/bin/testrb:5

$ cat test_foo.rb
require 'test/unit'
require 'optparse'
class TestFoo < Test::Unit::TestCase
  def test_foo
  end
end
o = OptionParser.new
o.on("-f"){puts "#{__FILE__}:-f option specified."}
o.parse!

どうやら'--'以降のオプションがファイルとして
Test::Unit::Collector::Dirに渡されているのが原因のようです。

以下のパッチでうまくいくようなので問題がなければ
取り込んでいただければ幸いです。

Index: lib/test/unit/autorunner.rb
===================================================================
RCS file: /home/ruby/CVS/ruby/lib/test/unit/autorunner.rb,v
retrieving revision 1.8.2.3
diff -u -r1.8.2.3 autorunner.rb
--- lib/test/unit/autorunner.rb 17 Feb 2005 02:56:46 -0000      1.8.2.3
+++ lib/test/unit/autorunner.rb 21 Jan 2006 12:57:28 -0000
@@ -85,7 +85,7 @@

       def process_args(args = ARGV)
         begin
-          @to_run.concat options.parse!(args)
+          options.order!(args){|arg| @to_run << arg}
         rescue OptionParser::ParseError => e
           puts e
           puts options

---
GO Noguchi<gonoguti / yahoo.co.jp>