LoginSignup
20
18

More than 5 years have passed since last update.

Serverspecで複数ホストのテストをする時、途中でfailしても、最後までspecを実行させる。

Last updated at Posted at 2014-08-12

Rspec::Core::RakeTask#fail_on_errorをfalseにする

これで途中でfailするexampleがあっても最後まで全ホスト分のspecを実行してくれます。

Rakefile
namespace :serverspec do
  task :all => properties.keys.map {|key| 'serverspec:' + key.split('.')[0] }
  properties.keys.each do |key|
    desc "Run serverspec to #{key}"
    RSpec::Core::RakeTask.new(key.split('.')[0].to_sym) do |t|
      ENV['TARGET_HOST'] = key
      t.pattern = 'spec/{' + properties[key][:roles].join(',') + '}/*_spec.rb'

      # 途中でfailしてもspec実行を続ける
      t.fail_on_error = false
    end
  end
end

ちなみに

実は、本件はServerspecと直接関係がありません。
Rakeコマンド(プロセス)とRakeタスクの関係です。

例のRakefileでは、
複数ホストへのServerspecを
1ホスト=1Rakeタスク
として、テストしたいホストの数だけRspecのRakeタスクを実行します。

デフォルトではfailするexampleがあると、そのRakeタスクが異常終了して
Rakeコマンドがabortしてしまうので
fail_on_errorfalseにして(異常終了しないようにして)それを防いでいます。

参考

20
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18