【问题标题】:Continue multi-host tests even on failure即使失败也能继续多主机测试
【发布时间】:2015-06-16 12:27:41
【问题描述】:

我已经构建了一些 serverspec 代码来在多个主机上运行一组测试。麻烦的是,当任何测试失败时,测试都会在当前主机上停止。即使测试失败,我也希望它继续到所有主机。

Rakefile:

namespace :spec do
  task :all => hosts.map {|h| 'spec:' + h.split('.')[0] }
  hosts.each do |host|
    begin
      desc "Run serverspec to #{host}"
      RSpec::Core::RakeTask.new(host) do |t|
        ENV['TARGET_HOST'] = host
        t.pattern = "spec/cfengine3/*_spec.rb"
      end
    rescue
    end
  end
end

完整代码: https://gist.github.com/neilhwatson/1d41c696102c01bbb87a

【问题讨论】:

    标签: ruby serverspec


    【解决方案1】:

    此行为由RSpec::Core::RakeTask#fail_on_error 控制,因此要使其在所有主机上继续运行,您需要添加t.fail_on_error = false。我也觉得你不需要rescue

    namespace :spec do
      task :all => hosts.map {|h| 'spec:' + h.split('.')[0] }
      hosts.each do |host|
        desc "Run serverspec to #{host}"
        RSpec::Core::RakeTask.new(host) do |t|
          ENV['TARGET_HOST'] = host
          t.pattern = "spec/cfengine3/*_spec.rb"
          t.fail_on_error = false
        end
      end
    end
    

    【讨论】:

    • 设置 t.fail_on_error = false 也会导致 rake 总是向调用进程返回退出代码 0。不幸的是,似乎没有continue_on_error 或类似的方法来确保所有任务都运行,并且在完成时仍然报告失败。
    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 2020-06-30
    • 2014-11-05
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多