gpt4 book ai didi

Ruby rake/testtask 产生不正确的命令

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:05 25 4
gpt4 key购买 nike

我的项目测试分为多个文件 - 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. 我是不是做错了什么抽成测试设置?

环境:

$ 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

最佳答案

添加:

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

关于Ruby rake/testtask 产生不正确的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com