2011-09-08 63 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