2012-11-02 21 views
6

我看到它是可能的參數傳遞給耙任務:是否可以在不使用環境變量的情況下將參數發送到`rake cucumber`?

task :task_name, :arg_name do |t, args| 

我希望做的是傳遞參數爲黃瓜rake任務:

Cucumber::Rake::Task.new({:tags => 'db:test:prepare'}) do |t, args| 
    t.cucumber_opts = ['--tags', #args?] 
end 

這算哪門子的可能的事情?這樣我可以做到:

rake cucumber:tags['tag1', 'tag2', ...] 

並讓它只運行那些標籤。大多數消息來源說要使用一個我已經完成的環境變量,但我更願意僅僅以「正確」的方式提供參數。

+1

這是一個重複:http://stackoverflow.com/questions/825748/how-do-i-pass-command-行參數到耙子任務 –

+2

不,它不是。這個問題是特定於Cucumber的,你不能像在這個問題的答案中那樣爲Cucumber rake任務添加參數。 –

+0

Gotcha。是否有可能編寫自己的包裝黃瓜的耙子任務? –

回答

0

這樣做的一種方法是通過像這樣的環境變量:rake cucumber:tags TAGS=tag1,tag2,然後在您的rake任務中解析ARGV

tags = ARGV[1].gsub(/.+=/, '') 

Cucumber::Rake::Task.new({:tags => 'db:test:prepare'}) do |t, args| 
    t.cucumber_opts = ['--tags', tags] 
end 

您也可以使其更加靈活像這樣

tags_index = ARGV.index {|a| a.start_with?('TAGS') } 
tags = ARGV[tags_index].gsub(/.+=/, '') 

但也許你會與像OptionParser更好。

5

你可以得到它通過做這樣的工作:

task :task_name, :arg1 do |t, args| 
    Cucumber::Rake::Task.new(:run) do |t| 
    t.cucumber_opts = "--format pretty --tags @#{args[:arg1]}" 
    end 
    Rake::Task[:run].invoke() 
end 
相關問題