summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-10-25 17:34:35 +0900
committerKoichi Sasada <ko1@atdot.net>2021-10-25 17:38:23 +0900
commita1c4cab11d613d7df037a81a770ee44a23a2e9be (patch)
tree658271e8acfb1f5d2c013a816ea8400338f3a382 /tool
parent7864efa105921eb3900c843126f2e0db02b9c6ae (diff)
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)
Diffstat (limited to 'tool')
-rw-r--r--tool/lib/test/unit/parallel.rb37
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: