Продолжайте тесты с несколькими хостами даже в случае сбоя

Я создал код serverpec для запуска группы тестов на нескольких хостах. Проблема в том, что тестирование останавливается на текущем хосте, когда какой-либо тест не проходит. Я хочу, чтобы он продолжался для всех хостов, даже если тест не пройден.

Рейкфайл:

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


person Neil H Watson    schedule 16.06.2015    source источник


Ответы (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
person egwspiti    schedule 18.06.2015
comment
Установка t.fail_on_error = false также заставляет rake всегда возвращать код выхода 0 вызывающему процессу. К сожалению, похоже, что не существует continue_on_error или подобного метода для обеспечения выполнения всех задач и сообщения об ошибках по завершении. - person conorsch; 25.07.2015