2017-10-20 102 views
1

.fixtures.yml不要刪除公共傀儡模塊,還有模塊從公共圖書館下載的,如下面的例子STDLIB和CONCAT:RSpec的木偶測試完成

fixtures: 
    forge_modules: 
    stdlib: puppetlabs/stdlib 
    concat: puppetlabs/concat 

這些模塊需要無論何時運行rspec-puppet測試。測試完成後,它們也會被刪除。

如果所有測試都完全運行,那很好。但是如果有一個失敗的測試需要單獨運行,這些模塊不可用。我必須一起運行所有測試(100+),因此公共模塊可以下載並可用。我在調試一個小錯誤時非常煩人。

是否有辦法配置rspec-puppet,以便它不會每次都下載/刪除這些公共模塊?

+0

puppetlabs-spec-helper正在下載而不是rspec-puppet。如果需要,您可以爲此提交功能請求,或者使用其他功能下載模塊依賴關係以進行測試。 –

回答

4

直到最近,Puppetlabs_spec_helper實際上仍然按照您希望的方式運行,即除非所有測試都通過,否則fixtures目錄未清理。

我注意到這個補丁here改變了這種行爲。對於它的價值,我也不同意這種改變。

無論如何,如果你想在舊的行爲,您可以:

  1. 使用Puppetlabs_spec_helper的早期版本。

  2. 定義自定義規範任務。

  3. 或者只是運行bundle exec rake spec_prep spec_standalone

  4. 或者如果您只是想在一個文件中運行測試,請運行bundle exec rake spec_prep; bundle exec rspec spec/somefile_spec.rb --fail-fast。 (該--fail-fast選項調試測試失敗的時候是有用的,它會導致rspec的中止在第一次失敗。)

定義與舊行爲自定義的規範工作,將它添加到您的Rake文件:

desc "Run spec tests and clean the fixtures directory if successful" 
task :custom_spec do 
    Rake::Task[:spec_prep].invoke 
    Rake::Task[:spec_standalone].invoke 
    Rake::Task[:spec_clean].invoke 
end 

相反,如果你希望它永遠,永遠清潔器具目錄:

desc "Run tests but don't clean up spec dir" 
task :custom_spec do 
    Rake::Task[:spec_prep].invoke 
    Rake::Task[:spec_standalone].invoke 
end 

在這兩種情況下,你會然後使用運行測試:

$ bundle exec rake custom_spec 
+0

我原以爲這是一套來自傀儡方的puppetlabs_spec_helper。它實際上來自Ruby方面。評論spec_clean正在做我想做的事情。謝謝! – fasten

+0

太好了。然後,您應該將問題標記爲已解決。 –

+1

現在通過https://tickets.puppetlabs.com/browse/PDK-636進行跟蹤 –