diff options
Diffstat (limited to 'test/ruby/envutil.rb')
-rw-r--r-- | test/ruby/envutil.rb | 9 |
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 |