2017-10-20 104 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进行跟踪 –