From 96195c1dc2fea6262523fcc1726c6dfd7fea274a Mon Sep 17 00:00:00 2001 From: Daniel Pittman Date: Fri, 22 Apr 2011 14:08:59 -0700 Subject: maint: add an "exit was called" matcher for rspec. We have a bunch of places that want to test if exit was called in a block of code or not, which we did in a whole pile of ad-hoc ways. Instead, better to have a custom matcher that tests specifically for the correct exit exception being thrown, and the right error code in it. Reviewed-By: Jesse Wolf --- spec/spec_helper.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 01ffabc48..1dcf3c2d4 100755 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -80,3 +80,25 @@ RSpec::Matchers.define :have_matching_element do |expected| actual.any? { |item| item =~ expected } end end + +RSpec::Matchers.define :exit_with do |expected| + actual = nil + match do |block| + begin + block.call + rescue SystemExit => e + actual = e.status + end + actual and actual == expected + end + failure_message_for_should do |block| + "expected exit with code #{expected} but " + + (actual.nil? ? " exit was not called" : "we exited with #{actual} instead") + end + failure_message_for_should_not do |block| + "expected that exit would not be called with #{expected}" + end + description do + "expect exit with #{expected}" + end +end -- cgit