summaryrefslogtreecommitdiff
path: root/test/ruby/envutil.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/envutil.rb')
-rw-r--r--test/ruby/envutil.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index f369d782a0..c874e7f120 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -68,10 +68,17 @@ module EnvUtil
signal = /mswin|mingw/ =~ RUBY_PLATFORM ? :KILL : :TERM
begin
Process.kill signal, pid
+ Timeout.timeout((reprieve unless signal == :KILL)) do
+ Process.wait(pid)
+ end
rescue Errno::ESRCH
break
+ rescue Timeout::Error
+ raise if signal == :KILL
+ signal = :KILL
else
- end until signal == :KILL or (sleep reprieve; signal = :KILL; false)
+ break
+ end while true
raise Timeout::Error
end
out_p.close if capture_stdout