2015-09-12 01:57:22 +03:00
|
|
|
import os
|
2015-09-17 05:42:09 +03:00
|
|
|
import re
|
2015-09-12 01:57:22 +03:00
|
|
|
import signal
|
|
|
|
import sys
|
|
|
|
from subprocess import PIPE
|
|
|
|
from subprocess import Popen
|
|
|
|
|
2015-09-26 04:18:40 +03:00
|
|
|
from tests.lib.testing import NORMAL_SIGNALS
|
2015-09-12 01:57:22 +03:00
|
|
|
from tests.lib.testing import pid_tree
|
|
|
|
|
|
|
|
|
|
|
|
def test_prints_signals(both_debug_modes, both_setsid_modes):
|
2015-09-26 04:18:40 +03:00
|
|
|
"""Ensure dumb-init proxies regular signals to its child."""
|
2015-09-12 01:57:22 +03:00
|
|
|
proc = Popen(
|
|
|
|
('dumb-init', sys.executable, '-m', 'tests.lib.print_signals'),
|
|
|
|
stdout=PIPE,
|
|
|
|
)
|
|
|
|
|
2015-09-17 05:42:09 +03:00
|
|
|
assert re.match(b'^ready \(pid: (?:[0-9]+)\)\n$', proc.stdout.readline())
|
2015-09-12 01:57:22 +03:00
|
|
|
|
2015-09-26 04:18:40 +03:00
|
|
|
for signum in NORMAL_SIGNALS:
|
2015-09-12 01:57:22 +03:00
|
|
|
proc.send_signal(signum)
|
2015-09-12 03:24:18 +03:00
|
|
|
assert proc.stdout.readline() == '{0}\n'.format(signum).encode('ascii')
|
2015-09-12 01:57:22 +03:00
|
|
|
|
|
|
|
for pid in pid_tree(proc.pid):
|
|
|
|
os.kill(pid, signal.SIGKILL)
|