From 4f4016497e12af1b1a227bf0f7ff5e6b6e6f92ec Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 18 Oct 2023 19:50:17 +0900 Subject: Handle `Timeout::Error` reported from workers --- tool/lib/test/unit.rb | 2 +- tool/test/testunit/test4test_timeout.rb | 15 +++++++++++++++ tool/test/testunit/test_timeout.rb | 10 ++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tool/test/testunit/test4test_timeout.rb create mode 100644 tool/test/testunit/test_timeout.rb diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index ecb7edd29f..4dc4392fc0 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -1065,7 +1065,7 @@ module Test runner.add_status(" = #$1") when /\A\.+\z/ runner.succeed - when /\A\.*[EFS][EFS.]*\z/ + when /\A\.*[EFST][EFST.]*\z/ runner.failed(s) else $stdout.print(s) diff --git a/tool/test/testunit/test4test_timeout.rb b/tool/test/testunit/test4test_timeout.rb new file mode 100644 index 0000000000..3225f66398 --- /dev/null +++ b/tool/test/testunit/test4test_timeout.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true +$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib" + +require 'test/unit' +require 'timeout' + +class TestForTestTimeout < Test::Unit::TestCase + 10.times do |i| + define_method("test_timeout_#{i}") do + Timeout.timeout(0.001) do + sleep + end + end + end +end diff --git a/tool/test/testunit/test_timeout.rb b/tool/test/testunit/test_timeout.rb new file mode 100644 index 0000000000..5864c8e7c5 --- /dev/null +++ b/tool/test/testunit/test_timeout.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: false +require 'test/unit' + +class TestTiemout < Test::Unit::TestCase + def test_timeout + cmd = [*@options[:ruby], "#{File.dirname(__FILE__)}/test4test_timeout.rb"] + result = IO.popen(cmd, err: [:child, :out], &:read) + assert_not_match(/^T{10}$/, result) + end +end -- cgit v1.2.3