зеркало из https://github.com/github/ruby.git
Round trip exception backtraces
This commit allows exception backtraces to round trip
This commit is contained in:
Родитель
f770a5be66
Коммит
a53ab897c3
|
@ -252,6 +252,8 @@ module Psych
|
|||
|
||||
e = build_exception((resolve_class($1) || class_loader.exception),
|
||||
h.delete('message'))
|
||||
|
||||
e.set_backtrace h.delete('backtrace') if h.key? 'backtrace'
|
||||
init_with(e, h, o)
|
||||
|
||||
when '!set', 'tag:yaml.org,2002:set'
|
||||
|
|
|
@ -472,6 +472,9 @@ module Psych
|
|||
accept msg
|
||||
end
|
||||
|
||||
@emitter.scalar 'backtrace', nil, nil, true, false, Nodes::Scalar::ANY
|
||||
accept o.backtrace
|
||||
|
||||
dump_ivars o
|
||||
|
||||
@emitter.end_mapping
|
||||
|
|
|
@ -23,6 +23,20 @@ module Psych
|
|||
$VERBOSE = @orig_verbose
|
||||
end
|
||||
|
||||
def make_ex msg = 'oh no!'
|
||||
begin
|
||||
raise msg
|
||||
rescue ::Exception => e
|
||||
e
|
||||
end
|
||||
end
|
||||
|
||||
def test_backtrace
|
||||
err = make_ex
|
||||
new_err = Psych.load(Psych.dump(err))
|
||||
assert_equal err.backtrace, new_err.backtrace
|
||||
end
|
||||
|
||||
def test_naming_exception
|
||||
err = String.xxx rescue $!
|
||||
new_err = Psych.load(Psych.dump(err))
|
||||
|
|
Загрузка…
Ссылка в новой задаче