diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-22 14:08:59 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-22 15:39:01 -0700 |
| commit | 96195c1dc2fea6262523fcc1726c6dfd7fea274a (patch) | |
| tree | e0825b02cba4dc74a73d1a1eae041aef68861ed6 | |
| parent | 822d5303f01b42cb074db52e6ee2c05e913ba9c5 (diff) | |
| download | puppet-96195c1dc2fea6262523fcc1726c6dfd7fea274a.tar.gz puppet-96195c1dc2fea6262523fcc1726c6dfd7fea274a.tar.xz puppet-96195c1dc2fea6262523fcc1726c6dfd7fea274a.zip | |
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 <jesse@puppetlabs.com>
| -rwxr-xr-x | spec/spec_helper.rb | 22 |
1 files changed, 22 insertions, 0 deletions
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 |
