如何从Rake的FileList格式化新字符串?

时间:2011-01-07 23:56:59

标签: ruby rake rakefile

我正在写一个rakefile,需要立即对几个测试dll运行mstest。我需要它只运行一次mstest,因为我只需要一个TRX文件。为了对多个测试dll运行mstest,我需要能够在同一个命令中添加几个/testcontainer:some.test.dll实例。这是我目前的佣金任务:

task :tests do
    testDlls = FileList.new("#{BUILD_PATH}/*.Specs.dll")
sh "#{MSTEST_PATH} /testcontainer:#{testDlls}"      
end

例如,testDlls有test1.dll,test2.dll和test3.dll。上述任务输出:

c:\msbuild\msbuild.exe /testcontainer:test1.dll test2.dll test3.dll

我需要的是:

c:\msbuild\msbuild.exe /testcontainer:test1.dll /testcontainer:test2.dll /testcontainer:test3.dll

如何获得所需的输出?

1 个答案:

答案 0 :(得分:2)

这应该有效:

require 'shellwords'
task :tests do
    testDlls = FileList.new("#{BUILD_PATH}/*.Specs.dll")
    ary = Shellwords.shellwords(testDlls.to_s)
    sh "#{MSTEST_PATH} #{ary.map {|dll| '/testcontainer:' + dll}.join(' ')"      
end