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

ruby-changes:69410

From: Koichi <ko1@a...>
Date: Mon, 25 Oct 2021 17:38:59 +0900 (JST)
Subject: [ruby-changes:69410] a1c4cab11d (master): check other IO#close calls

https://git.ruby-lang.org/ruby.git/commit/?id=a1c4cab11d

From a1c4cab11d613d7df037a81a770ee44a23a2e9be Mon Sep 17 00:00:00 2001
From: Koichi Sasada <ko1@a...>
Date: Mon, 25 Oct 2021 17:34:35 +0900
Subject: check other IO#close calls

http://ci.rvm.jp/results/trunk@ruby-iga/3690333
> tool/lib/test/unit/parallel.rb:68:in `close': Bad file descriptor (Errno::EBADF)
---
 tool/lib/test/unit/parallel.rb | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/tool/lib/test/unit/parallel.rb b/tool/lib/test/unit/parallel.rb
index 544239921cb..5fdf3628607 100644
--- a/tool/lib/test/unit/parallel.rb
+++ b/tool/lib/test/unit/parallel.rb
@@ -35,6 +35,20 @@ module Test https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit/parallel.rb#L35
         _report "start", Marshal.dump([inst.class.name, inst.__name__])
       end
 
+      def close_io io, suite
+        # To figure out which suite raises EBADF error.
+        begin
+          io.close if io && !io.closed?
+        rescue Exception => e
+          STDERR.puts <<~EOS
+          !!!!!!!!!!!!!!!!!!!!!!!!!!!!
+          !! #{e} at #{suite.name}
+          !!!!!!!!!!!!!!!!!!!!!!!!!!!!
+          EOS
+          raise
+        end
+      end
+
       def _run_suite(suite, type) # :nodoc:
         @partial_report = []
         orig_testout = Test::Unit::Runner.output
@@ -65,13 +79,15 @@ module Test https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit/parallel.rb#L79
         $stdin = orig_stdin
         $stdout = orig_stdout
 
-        o.close
+        close_io o, suite
+
         begin
           th.join
         rescue IOError
           raise unless /stream closed|closed stream/ =~ $!.message
         end
-        i.close
+
+        close_io i, suite
 
         result << @partial_report
         @partial_report = nil
@@ -85,21 +101,8 @@ module Test https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit/parallel.rb#L101
         Test::Unit::Runner.output = orig_stdout
         $stdin = orig_stdin if orig_stdin
         $stdout = orig_stdout if orig_stdout
-
-        # To figure out which suite raises EBADF error.
-        begin
-          o.close if o && !o.closed?
-        rescue Exception => e
-          STDERR.puts "#{e} at #{suite.name} (o)"
-          raise
-        end
-
-        begin
-          i.close if i && !i.closed?
-        rescue Exception => e
-          STDERR.puts "#{e} at #{suite.name} (i)"
-          raise
-        end
+        close_io o, suite
+        close_io i, suite
       end
 
       def run(args = []) # :nodoc:
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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