2011-09-08 61 views
3

我有我的項目測試分解成多個文件 - 測試/ test_1.rb和測試/ test_2.rb。紅寶石耙/測試任務產生不正確的命令

運行 '耙測試' 給出:

$ 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_general.rb測試/ test_cv.rb」

如果我刪除引號(將最後一個參數分成兩個參數),測試運行完美。

  1. 爲什麼耙的測試運行是兩個文件一起分組到 的一個說法?
  2. 我在做耙架測試 設置有問題嗎?

環境:

$ 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 
+0

你有一個不尋常的殼呢?還是非標準的$ IFS變量? –

+0

此外,test.pattern.inspect的值可能可以幫助 –

+1

@sunkencity得到它。我正在使用test.pattern = FileList ...當我應該一直在使用test.test_files = FileList ... –

回答

5

補充:

test.test_files =文件清單[ '測試/測試* .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 
+1

你不符合標準,他似乎意識到shell是如何工作的。他想知道爲什麼'rake test'組文件名。 –

+1

深層問題是爲什麼rake生成「test/test_general.rb test/test_cv.rb」。解釋是好的壽。 –

+0

沒錯,問題是什麼。用正確答案更新。如果他想使用模式,它應該是一個模式而不是文件列表。 – sunkencity