Ruby rake / testtask生成错误的命令

时间:2011-09-08 09:01:38

标签: ruby testing rake

我的项目测试分为多个文件 - test / test_1.rb和test / test_2.rb。

运行'rake test'给出:

$ rake test
ruby -I"lib:test" -I"/foo/rake-0.9.2/lib" "/foo/rake_test_loader.rb" "test/test_general.rb test/test_cv.rb"
/home/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:11:in `require': no such file to load -- /home/rob/src/robsyme/bioruby-chado/test/test_general.rb test/test_cv.rb (LoadError)
... #you can guess the rest

注意ruby命令中的最后一个参数:“test / test_general.rb test / test_cv.rb”

如果删除引号(将最后一个参数拆分为两个参数),则测试运行完美。

  1. 为什么rake的测试运行员会将这两个文件组合在一起 一个论点?
  2. 我在rake测试中做错了什么 设置?
  3. 环境:

    $ grep -A4 TestTask Rakefile 
    Rake::TestTask.new(:test) do |test|
      test.libs << 'test'
      test.pattern = FileList['test/**/test_*.rb']
      test.verbose = true
    end
    $ ruby -v
    ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
    $ gem --version
    1.8.10
    $ rake --version
    rake, version 0.9.2
    

1 个答案:

答案 0 :(得分:5)

添加了:

test.test_files = FileList ['test / test * .rb']

文件列表应该给予测试文件而不是模式。为了模式,我想你可以将模式作为字符串。

以前的回答(被误解的问题)

这就是shell的工作方式。如果要定位其中包含空格的文件名,可以引用文件名。然后它被作为一个参数传递而不是两个。

$ cat > "foo bar"
foobar
^D
$ cat foo\ bar 
foobar
$ cat "foo bar" 
foobar

$ ls "Rakefile Gemfile"
ls: Rakefile Gemfile: No such file or directory

$ ls Rakefile Gemfile
Gemfile  Rakefile