Ruby: как передать опции для тестирования :: unit в 1.9.3 - PullRequest
1 голос
/ 29 сентября 2011

Я хочу запустить тестовый файл:

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

До рубина 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): .

1 Ответ

1 голос
/ 29 сентября 2011

Попробуйте двойную черту:

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 ruby ​​не был столь строг, когда вы указываете stdin, но ничего не приходит на stdin (какВы не).

...