diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-09 17:44:01 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-09 18:14:21 +0900 |
commit | c423cc932ee16f64a845e710d92baf79729eae63 (patch) | |
tree | 8235ebdaba1e5b03543c204096a93b577af5652c /tool/lib | |
parent | fc913ad21dcb04bd3d3786f9a3072a6717a52a9a (diff) |
Refactor `Test::Unit::CoreAssertions#assert_nothing_raised`
* Separate exception classes to be rescued or reraised
* Use the filtered backtrace in the failure message
* Raise a new `AssertionFailedError` with the original backtrace
Diffstat (limited to 'tool/lib')
-rw-r--r-- | tool/lib/core_assertions.rb | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/tool/lib/core_assertions.rb b/tool/lib/core_assertions.rb index 1299c6af74..6769ee7a91 100644 --- a/tool/lib/core_assertions.rb +++ b/tool/lib/core_assertions.rb @@ -172,27 +172,15 @@ module Test msg = args.pop end begin - line = __LINE__; yield - rescue Test::Unit::PendedError + yield + rescue Test::Unit::PendedError, *(Test::Unit::AssertionFailedError if args.empty?) raise - rescue Exception => e - bt = e.backtrace - as = e.instance_of?(Test::Unit::AssertionFailedError) - if as - ans = /\A#{Regexp.quote(__FILE__)}:#{line}:in /o - bt.reject! {|ln| ans =~ ln} - end - if ((args.empty? && !as) || - args.any? {|a| a.instance_of?(Module) ? e.is_a?(a) : e.class == a }) - msg = message(msg) { - "Exception raised:\n<#{mu_pp(e)}>\n" + - "Backtrace:\n" + - e.backtrace.map{|frame| " #{frame}"}.join("\n") - } - raise Test::Unit::AssertionFailedError, msg.call, bt - else - raise - end + rescue *(args.empty? ? Exception : args) => e + msg = message(msg) { + "Exception raised:\n<#{mu_pp(e)}>\n""Backtrace:\n" << + Test.filter_backtrace(e.backtrace).map{|frame| " #{frame}"}.join("\n") + } + raise Test::Unit::AssertionFailedError, msg.call, e.backtrace end end |