From 8762b78d1b44b50092a8cbfc22e31bf611612a73 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 13 Apr 2009 13:09:05 -0700 Subject: Fix SIGINT/SIGTERM handling (broken in 0.5.0) By reraising SignalException in workers. Since we just rely on default signal handlers for the majority of signals now, ensure those signals actually exit the process. --- test/exec/test_exec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test') diff --git a/test/exec/test_exec.rb b/test/exec/test_exec.rb index 596ab88..8780da0 100644 --- a/test/exec/test_exec.rb +++ b/test/exec/test_exec.rb @@ -72,6 +72,22 @@ end end end + def test_exit_signals + %w(INT TERM QUIT).each do |sig| + File.open("config.ru", "wb") { |fp| fp.syswrite(HI) } + pid = xfork { redirect_test_io { exec($unicorn_bin, "-l#@addr:#@port") } } + wait_master_ready("test_stderr.#{pid}.log") + status = nil + assert_nothing_raised do + Process.kill(sig, pid) + pid, status = Process.waitpid2(pid) + end + reaped = File.readlines("test_stderr.#{pid}.log").grep(/reaped/) + assert_equal 1, reaped.size + assert status.exited? + end + end + def test_basic File.open("config.ru", "wb") { |fp| fp.syswrite(HI) } pid = fork do -- cgit v1.2.3-24-ge0c7