mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Move some assertions to CoreAssertions. (#2354)
They are used by default gems like forwardable. * assert_raise_with_message * assert_warning * assert_warn
This commit is contained in:
parent
930e637c0e
commit
216d230080
Notes:
git
2019-08-31 04:40:14 +09:00
Merged-By: hsbt <hsbt@ruby-lang.org>
2 changed files with 66 additions and 66 deletions
|
@ -99,56 +99,6 @@ module Test
|
|||
raise NoMethodError, "use assert_raise", caller
|
||||
end
|
||||
|
||||
# :call-seq:
|
||||
# assert_raise_with_message(exception, expected, msg = nil, &block)
|
||||
#
|
||||
#Tests if the given block raises an exception with the expected
|
||||
#message.
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# nil #Fails, no Exceptions are raised
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise ArgumentError, "foo" #Fails, different Exception is raised
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise "bar" #Fails, RuntimeError is raised but the message differs
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise "foo" #Raises RuntimeError with the message, so assertion succeeds
|
||||
# end
|
||||
def assert_raise_with_message(exception, expected, msg = nil, &block)
|
||||
case expected
|
||||
when String
|
||||
assert = :assert_equal
|
||||
when Regexp
|
||||
assert = :assert_match
|
||||
else
|
||||
raise TypeError, "Expected #{expected.inspect} to be a kind of String or Regexp, not #{expected.class}"
|
||||
end
|
||||
|
||||
ex = m = nil
|
||||
EnvUtil.with_default_internal(expected.encoding) do
|
||||
ex = assert_raise(exception, msg || proc {"Exception(#{exception}) with message matches to #{expected.inspect}"}) do
|
||||
yield
|
||||
end
|
||||
m = ex.message
|
||||
end
|
||||
msg = message(msg, "") {"Expected Exception(#{exception}) was raised, but the message doesn't match"}
|
||||
|
||||
if assert == :assert_equal
|
||||
assert_equal(expected, m, msg)
|
||||
else
|
||||
msg = message(msg) { "Expected #{mu_pp expected} to match #{mu_pp m}" }
|
||||
assert expected =~ m, msg
|
||||
block.binding.eval("proc{|_|$~=_}").call($~)
|
||||
end
|
||||
ex
|
||||
end
|
||||
|
||||
# :call-seq:
|
||||
# assert_nothing_raised( *args, &block )
|
||||
#
|
||||
|
@ -522,22 +472,6 @@ EOT
|
|||
assert !status.signaled?, FailDesc[status, message, out]
|
||||
end
|
||||
|
||||
def assert_warning(pat, msg = nil)
|
||||
result = nil
|
||||
stderr = EnvUtil.with_default_internal(pat.encoding) {
|
||||
EnvUtil.verbose_warning {
|
||||
result = yield
|
||||
}
|
||||
}
|
||||
msg = message(msg) {diff pat, stderr}
|
||||
assert(pat === stderr, msg)
|
||||
result
|
||||
end
|
||||
|
||||
def assert_warn(*args)
|
||||
assert_warning(*args) {$VERBOSE = false; yield}
|
||||
end
|
||||
|
||||
def assert_no_warning(pat, msg = nil)
|
||||
result = nil
|
||||
stderr = EnvUtil.verbose_warning {
|
||||
|
|
|
@ -174,6 +174,72 @@ eom
|
|||
ret
|
||||
end
|
||||
|
||||
# :call-seq:
|
||||
# assert_raise_with_message(exception, expected, msg = nil, &block)
|
||||
#
|
||||
#Tests if the given block raises an exception with the expected
|
||||
#message.
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# nil #Fails, no Exceptions are raised
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise ArgumentError, "foo" #Fails, different Exception is raised
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise "bar" #Fails, RuntimeError is raised but the message differs
|
||||
# end
|
||||
#
|
||||
# assert_raise_with_message(RuntimeError, "foo") do
|
||||
# raise "foo" #Raises RuntimeError with the message, so assertion succeeds
|
||||
# end
|
||||
def assert_raise_with_message(exception, expected, msg = nil, &block)
|
||||
case expected
|
||||
when String
|
||||
assert = :assert_equal
|
||||
when Regexp
|
||||
assert = :assert_match
|
||||
else
|
||||
raise TypeError, "Expected #{expected.inspect} to be a kind of String or Regexp, not #{expected.class}"
|
||||
end
|
||||
|
||||
ex = m = nil
|
||||
EnvUtil.with_default_internal(expected.encoding) do
|
||||
ex = assert_raise(exception, msg || proc {"Exception(#{exception}) with message matches to #{expected.inspect}"}) do
|
||||
yield
|
||||
end
|
||||
m = ex.message
|
||||
end
|
||||
msg = message(msg, "") {"Expected Exception(#{exception}) was raised, but the message doesn't match"}
|
||||
|
||||
if assert == :assert_equal
|
||||
assert_equal(expected, m, msg)
|
||||
else
|
||||
msg = message(msg) { "Expected #{mu_pp expected} to match #{mu_pp m}" }
|
||||
assert expected =~ m, msg
|
||||
block.binding.eval("proc{|_|$~=_}").call($~)
|
||||
end
|
||||
ex
|
||||
end
|
||||
|
||||
def assert_warning(pat, msg = nil)
|
||||
result = nil
|
||||
stderr = EnvUtil.with_default_internal(pat.encoding) {
|
||||
EnvUtil.verbose_warning {
|
||||
result = yield
|
||||
}
|
||||
}
|
||||
msg = message(msg) {diff pat, stderr}
|
||||
assert(pat === stderr, msg)
|
||||
result
|
||||
end
|
||||
|
||||
def assert_warn(*args)
|
||||
assert_warning(*args) {$VERBOSE = false; yield}
|
||||
end
|
||||
|
||||
class << (AssertFile = Struct.new(:failure_message).new)
|
||||
include CoreAssertions
|
||||
def assert_file_predicate(predicate, *args)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue