Add a test for Exception#detailed_message

This commit is contained in:
Yusuke Endoh 2022-02-02 15:49:13 +09:00
Родитель 4db986431a
Коммит 5099f64fa4
1 изменённых файлов: 29 добавлений и 0 удалений

Просмотреть файл

@ -1421,4 +1421,33 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status|
end
end;
end
def test_detailed_message
e = RuntimeError.new("message")
assert_equal("message (RuntimeError)", e.detailed_message)
assert_equal("\e[1mmessage (\e[1;4mRuntimeError\e[m\e[1m)\e[m", e.detailed_message(highlight: true))
e = RuntimeError.new("foo\nbar\nbaz")
assert_equal("foo (RuntimeError)\nbar\nbaz", e.detailed_message)
assert_equal("\e[1mfoo (\e[1;4mRuntimeError\e[m\e[1m)\e[m\n\e[1mbar\e[m\n\e[1mbaz\e[m", e.detailed_message(highlight: true))
e = RuntimeError.new("")
assert_equal("unhandled exception", e.detailed_message)
assert_equal("\e[1;4munhandled exception\e[m", e.detailed_message(highlight: true))
e = RuntimeError.new
assert_equal("RuntimeError (RuntimeError)", e.detailed_message)
assert_equal("\e[1mRuntimeError (\e[1;4mRuntimeError\e[m\e[1m)\e[m", e.detailed_message(highlight: true))
end
def test_full_message_with_custom_detailed_message
e = RuntimeError.new("message")
opt_ = nil
e.define_singleton_method(:detailed_message) do |**opt|
opt_ = opt
"BOO!"
end
assert_match("BOO!", e.full_message.lines.first)
assert_equal({ highlight: Exception.to_tty? }, opt_)
end
end