1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Fix crash in test runner on timeout

When a test worker hangs and timeouts, the test runner crashes with the
following stack trace:

ruby/tool/lib/test/unit.rb:1747:in `puke': undefined method `backtrace' for Timeout::Error:Class (NoMethodError)
	from ruby/tool/lib/test/unit.rb:790:in `block in _run_parallel'
	from ruby/tool/lib/test/unit.rb:788:in `each'

This commit adds handling for Timeout::Error and outputs a message.
This commit is contained in:
Peter Zhu 2022-11-02 13:34:02 -04:00
parent 81e84e0a4d
commit b777408c33

View file

@ -787,7 +787,7 @@ module Test
unless rep.empty?
rep.each do |r|
if r[:error]
puke(*r[:error], Timeout::Error)
puke(*r[:error], Timeout::Error.new)
next
end
r[:report]&.each do |f|
@ -1742,6 +1742,9 @@ module Test
when Test::Unit::AssertionFailedError then
@failures += 1
"Failure:\n#{klass}##{meth} [#{location e}]:\n#{e.message}\n"
when Timeout::Error
@errors += 1
"Timeout:\n#{klass}##{meth}\n"
else
@errors += 1
bt = Test::filter_backtrace(e.backtrace).join "\n "