test: ensure pkill is run even without exception.

This should make it easier to cleanup after test failures or successes.

It may also allow simplification of `test do` blocks if they can assume
that all subprocesses will be killed.
This commit is contained in:
Mike McQuaid 2020-04-15 19:47:05 +01:00
parent 80eda90f01
commit 7da922cd5c
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70

View File

@ -37,6 +37,7 @@ begin
rescue Exception => e # rubocop:disable Lint/RescueException
error_pipe.puts e.to_json
error_pipe.close
ensure
pid = Process.pid.to_s
if which("pgrep") && which("pkill") && system("pgrep", "-P", pid, out: :close)
$stderr.puts "Killing child processes..."
@ -44,5 +45,5 @@ rescue Exception => e # rubocop:disable Lint/RescueException
sleep 1
system "pkill", "-9", "-P", pid
end
exit! 1
exit! 1 if e
end