20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?