aboutsummaryrefslogtreecommitdiffstats
path: root/spec/mspec/lib
diff options
context:
space:
mode:
Diffstat (limited to 'spec/mspec/lib')
-rw-r--r--spec/mspec/lib/mspec/guards/guard.rb28
-rw-r--r--spec/mspec/lib/mspec/matchers/base.rb2
-rw-r--r--spec/mspec/lib/mspec/utils/script.rb2
3 files changed, 28 insertions, 4 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
diff --git a/spec/mspec/lib/mspec/matchers/base.rb b/spec/mspec/lib/mspec/matchers/base.rb
index 86b2fb4cec..fc2d36c84a 100644
--- a/spec/mspec/lib/mspec/matchers/base.rb
+++ b/spec/mspec/lib/mspec/matchers/base.rb
@@ -5,7 +5,7 @@ class MSpecEnv
include MSpecMatchers
end
-# Expactations are sometimes used in a module body
+# Expectations are sometimes used in a module body
class Module
include MSpecMatchers
end
diff --git a/spec/mspec/lib/mspec/utils/script.rb b/spec/mspec/lib/mspec/utils/script.rb
index 910dcd22a7..146e3367af 100644
--- a/spec/mspec/lib/mspec/utils/script.rb
+++ b/spec/mspec/lib/mspec/utils/script.rb
@@ -234,7 +234,7 @@ class MSpecScript
files patterns
end
- def cores(max = 1)
+ def cores(max)
require 'etc'
[Etc.nprocessors, max].min
end