Как я могу отформатировать новую строку из Rake's FileList? - PullRequest
0 голосов
/ 08 января 2011

Я пишу rakefile и мне нужно запустить mstest против нескольких тестовых DLL одновременно. Мне нужно запустить mstest только один раз, потому что мне нужен только один файл TRX. Чтобы запустить mstest против более чем одной тестовой DLL, мне нужно иметь возможность добавить несколько экземпляров /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 Ответ

2 голосов
/ 08 января 2011

Это должно работать:

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
...