@@ -166,25 +166,32 @@ def test_terminate(self):
166166
167167 @unittest .skipIf (sys .platform == 'win32' , "Don't have SIGHUP" )
168168 def test_send_signal (self ):
169- code = 'import time; print("sleeping", flush=True); time.sleep(3600)'
170- args = [sys .executable , '-c' , code ]
171- create = asyncio .create_subprocess_exec (* args ,
172- stdout = subprocess .PIPE ,
173- loop = self .loop )
174- proc = self .loop .run_until_complete (create )
175-
176- @asyncio .coroutine
177- def send_signal (proc ):
178- # basic synchronization to wait until the program is sleeping
179- line = yield from proc .stdout .readline ()
180- self .assertEqual (line , b'sleeping\n ' )
169+ # bpo-31034: Make sure that we get the default signal handler (killing
170+ # the process). The parent process may have decided to ignore SIGHUP,
171+ # and signal handlers are inherited.
172+ old_handler = signal .signal (signal .SIGHUP , signal .SIG_DFL )
173+ try :
174+ code = 'import time; print("sleeping", flush=True); time.sleep(3600)'
175+ args = [sys .executable , '-c' , code ]
176+ create = asyncio .create_subprocess_exec (* args ,
177+ stdout = subprocess .PIPE ,
178+ loop = self .loop )
179+ proc = self .loop .run_until_complete (create )
181180
182- proc .send_signal (signal .SIGHUP )
183- returncode = (yield from proc .wait ())
184- return returncode
185-
186- returncode = self .loop .run_until_complete (send_signal (proc ))
187- self .assertEqual (- signal .SIGHUP , returncode )
181+ @asyncio .coroutine
182+ def send_signal (proc ):
183+ # basic synchronization to wait until the program is sleeping
184+ line = yield from proc .stdout .readline ()
185+ self .assertEqual (line , b'sleeping\n ' )
186+
187+ proc .send_signal (signal .SIGHUP )
188+ returncode = (yield from proc .wait ())
189+ return returncode
190+
191+ returncode = self .loop .run_until_complete (send_signal (proc ))
192+ self .assertEqual (- signal .SIGHUP , returncode )
193+ finally :
194+ signal .signal (signal .SIGHUP , old_handler )
188195
189196 def prepare_broken_pipe_test (self ):
190197 # buffer large enough to feed the whole pipe buffer
0 commit comments