ruby-changes:74322
From: Peter <ko1@a...>
Date: Thu, 3 Nov 2022 02:36:22 +0900 (JST)
Subject: [ruby-changes:74322] b777408c33 (master): Fix crash in test runner on timeout
https://git.ruby-lang.org/ruby.git/commit/?id=b777408c33 From b777408c33b57077f8be09eaed9245eeca0b59c5 Mon Sep 17 00:00:00 2001 From: Peter Zhu <peter@p...> Date: Wed, 2 Nov 2022 13:34:02 -0400 Subject: 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. --- tool/lib/test/unit.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index b2190843c8..59409f016c 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -787,7 +787,7 @@ module Test https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit.rb#L787 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 https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit.rb#L1742 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 " -- cgit v1.2.3 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/