mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
asyncio: Add close() back to Unix selector event loop, to remove all signal handlers. Should fix buildbot issues.
This commit is contained in:
parent
79ed4c744a
commit
0b69fbc642
2 changed files with 21 additions and 0 deletions
|
|
@ -48,6 +48,11 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
|
|||
def _socketpair(self):
|
||||
return socket.socketpair()
|
||||
|
||||
def close(self):
|
||||
for sig in list(self._signal_handlers):
|
||||
self.remove_signal_handler(sig)
|
||||
super().close()
|
||||
|
||||
def add_signal_handler(self, sig, callback, *args):
|
||||
"""Add a handler for a signal. UNIX only.
|
||||
|
||||
|
|
|
|||
|
|
@ -183,6 +183,22 @@ class SelectorEventLoopTests(unittest.TestCase):
|
|||
self.assertRaises(
|
||||
RuntimeError, self.loop.remove_signal_handler, signal.SIGHUP)
|
||||
|
||||
@unittest.mock.patch('asyncio.unix_events.signal')
|
||||
def test_close(self, m_signal):
|
||||
m_signal.NSIG = signal.NSIG
|
||||
|
||||
self.loop.add_signal_handler(signal.SIGHUP, lambda: True)
|
||||
self.loop.add_signal_handler(signal.SIGCHLD, lambda: True)
|
||||
|
||||
self.assertEqual(len(self.loop._signal_handlers), 2)
|
||||
|
||||
m_signal.set_wakeup_fd.reset_mock()
|
||||
|
||||
self.loop.close()
|
||||
|
||||
self.assertEqual(len(self.loop._signal_handlers), 0)
|
||||
m_signal.set_wakeup_fd.assert_called_once_with(-1)
|
||||
|
||||
|
||||
class UnixReadPipeTransportTests(unittest.TestCase):
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue