aboutsummaryrefslogtreecommitdiffstats
path: root/spec/mspec/lib/mspec/matchers
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-28 15:14:55 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-28 15:14:55 +0000
commit974e862db9f6c91dc9448570d1a103aad357a6e5 (patch)
tree02c6ae19120f92f7aea5d691be9e9a20618be7e7 /spec/mspec/lib/mspec/matchers
parentad1b64d35d7ca980a0398f09cff527d7420cd5c1 (diff)
downloadruby-974e862db9f6c91dc9448570d1a103aad357a6e5.tar.gz
Update to ruby/mspec@90925d6
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/mspec/lib/mspec/matchers')
-rw-r--r--spec/mspec/lib/mspec/matchers/complain.rb34
-rw-r--r--spec/mspec/lib/mspec/matchers/raise_error.rb8
2 files changed, 26 insertions, 16 deletions
diff --git a/spec/mspec/lib/mspec/matchers/complain.rb b/spec/mspec/lib/mspec/matchers/complain.rb
index 71b6a77680..4bcb255040 100644
--- a/spec/mspec/lib/mspec/matchers/complain.rb
+++ b/spec/mspec/lib/mspec/matchers/complain.rb
@@ -7,44 +7,48 @@ class ComplainMatcher
def matches?(proc)
@saved_err = $stderr
- @stderr = $stderr = IOStub.new
@verbose = $VERBOSE
- $VERBOSE = false
-
- proc.call
+ begin
+ err = $stderr = IOStub.new
+ $VERBOSE = false
+ Thread.current[:in_mspec_complain_matcher] = true
+ proc.call
+ ensure
+ $VERBOSE = @verbose
+ $stderr = @saved_err
+ Thread.current[:in_mspec_complain_matcher] = false
+ end
+ @warning = err.to_s
unless @complaint.nil?
case @complaint
when Regexp
- return false unless $stderr =~ @complaint
+ return false unless @warning =~ @complaint
else
- return false unless $stderr == @complaint
+ return false unless @warning == @complaint
end
end
- return $stderr.empty? ? false : true
- ensure
- $VERBOSE = @verbose
- $stderr = @saved_err
+ return @warning.empty? ? false : true
end
def failure_message
if @complaint.nil?
["Expected a warning", "but received none"]
elsif @complaint.kind_of? Regexp
- ["Expected warning to match: #{@complaint.inspect}", "but got: #{@stderr.chomp.inspect}"]
+ ["Expected warning to match: #{@complaint.inspect}", "but got: #{@warning.chomp.inspect}"]
else
- ["Expected warning: #{@complaint.inspect}", "but got: #{@stderr.chomp.inspect}"]
+ ["Expected warning: #{@complaint.inspect}", "but got: #{@warning.chomp.inspect}"]
end
end
def negative_failure_message
if @complaint.nil?
- ["Unexpected warning: ", @stderr.chomp.inspect]
+ ["Unexpected warning: ", @warning.chomp.inspect]
elsif @complaint.kind_of? Regexp
- ["Expected warning not to match: #{@complaint.inspect}", "but got: #{@stderr.chomp.inspect}"]
+ ["Expected warning not to match: #{@complaint.inspect}", "but got: #{@warning.chomp.inspect}"]
else
- ["Expected warning: #{@complaint.inspect}", "but got: #{@stderr.chomp.inspect}"]
+ ["Expected warning: #{@complaint.inspect}", "but got: #{@warning.chomp.inspect}"]
end
end
end
diff --git a/spec/mspec/lib/mspec/matchers/raise_error.rb b/spec/mspec/lib/mspec/matchers/raise_error.rb
index 28c7a5ea2f..2f9afdc687 100644
--- a/spec/mspec/lib/mspec/matchers/raise_error.rb
+++ b/spec/mspec/lib/mspec/matchers/raise_error.rb
@@ -53,13 +53,19 @@ class RaiseErrorMatcher
exception_class_and_message(exception.class, exception.message)
end
+ def format_result(result)
+ result.pretty_inspect.chomp
+ rescue => e
+ "#pretty_inspect raised #{e.class}; A #<#{result.class}>"
+ end
+
def failure_message
message = ["Expected #{format_expected_exception}"]
if @actual
message << "but got #{format_exception(@actual)}"
else
- message << "but no exception was raised (#{@result.pretty_inspect.chomp} was returned)"
+ message << "but no exception was raised (#{format_result(@result)} was returned)"
end
message