[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]