diff options
author | Koichi Sasada <ko1@atdot.net> | 2021-10-25 17:34:35 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2021-10-25 17:38:23 +0900 |
commit | a1c4cab11d613d7df037a81a770ee44a23a2e9be (patch) | |
tree | 658271e8acfb1f5d2c013a816ea8400338f3a382 | |
parent | 7864efa105921eb3900c843126f2e0db02b9c6ae (diff) | |
download | ruby-a1c4cab11d613d7df037a81a770ee44a23a2e9be.tar.gz |
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)
-rw-r--r-- | tool/lib/test/unit/parallel.rb | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/tool/lib/test/unit/parallel.rb b/tool/lib/test/unit/parallel.rb index 544239921c..5fdf362860 100644 --- a/tool/lib/test/unit/parallel.rb +++ b/tool/lib/test/unit/parallel.rb @@ -35,6 +35,20 @@ module Test _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 $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 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: |