зеркало из https://github.com/github/ruby.git
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:
Родитель
930e637c0e
Коммит
216d230080
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче