diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-07-27 12:10:23 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-07-27 12:10:23 +0000 |
commit | c13aa27e52c3ba10a329cf5a70b25fbf2a72d556 (patch) | |
tree | e9d0dbdd7424682ec9d94f9d5ff9c95d3a0229dd /spec/mspec/lib/mspec/guards | |
parent | aa30bfd53651ff87983e5706a0d06706e8265c3b (diff) |
Update to ruby/mspec@353605f
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/mspec/lib/mspec/guards')
-rw-r--r-- | spec/mspec/lib/mspec/guards/guard.rb | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/spec/mspec/lib/mspec/guards/guard.rb b/spec/mspec/lib/mspec/guards/guard.rb index 88adbba260..322a08145d 100644 --- a/spec/mspec/lib/mspec/guards/guard.rb +++ b/spec/mspec/lib/mspec/guards/guard.rb @@ -76,14 +76,22 @@ class SpecGuard def run_if(name, &block) @name = name - yield if yield?(false) + if block + yield if yield?(false) + else + yield?(false) + end ensure unregister end def run_unless(name, &block) @name = name - yield if yield?(true) + if block + yield if yield?(true) + else + yield?(true) + end ensure unregister end @@ -115,3 +123,19 @@ class SpecGuard raise "must be implemented by the subclass" end end + +# Combined guards + +def guard(condition, &block) + raise "condition must be a Proc" unless condition.is_a?(Proc) + raise LocalJumpError, "no block given" unless block + return yield if MSpec.mode? :unguarded or MSpec.mode? :verify or MSpec.mode? :report + yield if condition.call +end + +def guard_not(condition, &block) + raise "condition must be a Proc" unless condition.is_a?(Proc) + raise LocalJumpError, "no block given" unless block + return yield if MSpec.mode? :unguarded or MSpec.mode? :verify or MSpec.mode? :report + yield unless condition.call +end |