Ruby:如何在 1.9.3 中将选项传递给 test::unit

发布于 2024-12-07 16:05:51 字数 566 浏览 0 评论 0原文

我想运行一个测试文件:

# xxx.rb
require 'test/unit'; class XTest < Test::Unit::TestCase; def test_xxx; end; end

直到 ruby​​ 1.9.2

ruby -Itest -e "require './xxx.rb'" - -v

完成了这项工作,1.9.3 我突然得到:(

/usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1/test/unit.rb:167:in
`block in non_options': file not found: - (ArgumentError)

它尝试加载不存在的文件“-”)

任何想法如何恢复详细模式/将选项传递给 test::unit ?

正确的输出如下所示:

Loaded suite -e
Started
test_xxx(XTest): .

I want to run a test file:

# xxx.rb
require 'test/unit'; class XTest < Test::Unit::TestCase; def test_xxx; end; end

Until ruby 1.9.2

ruby -Itest -e "require './xxx.rb'" - -v

did the job, with 1.9.3 I suddenly get:

/usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1/test/unit.rb:167:in
`block in non_options': file not found: - (ArgumentError)

(it tries to load the file '-' which does not exist)

Any ideas how to get the verbose mode back / to pass options to test::unit ?

Correct output would look like:

Loaded suite -e
Started
test_xxx(XTest): .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无语# 2024-12-14 16:05:51

用双破折号尝试一下:

ruby -Itest -e "require './xxx.rb'" -- -v

或者像这样(没有破折号,不需要):

ruby -Itest xxx.rb -v

为了解释一下,我认为在您的示例中您使用的是单破折号,这通常意味着“使用 stdin 作为文件”。例如,您可以这样做:

cat xxx.rb | ruby -Itest - -v

使用双破折号来停止参数解析,从而将 -v 传递给测试单元。至于为什么你的例子用一个破折号工作到1.9.3...我猜在1.9.3之前,当你指定标准输入但没有任何东西进入标准输入时,红宝石并不那么严格(如你不知道)。

Try it with a double-dash:

ruby -Itest -e "require './xxx.rb'" -- -v

Or like this (no dashes, no require):

ruby -Itest xxx.rb -v

To explain, I think that in your example you are using a single dash which commonly means 'use stdin as a file'. You could do this, for example:

cat xxx.rb | ruby -Itest - -v

Double-dashes are used to stop argument parsing and hence pass the -v to test unit. As to why your example with a single dash worked up to 1.9.3... I'm guessing that prior to 1.9.3 ruby wasn't as strict when you specify stdin but don't have anything coming in on stdin (as you don't).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文