raise NotImplementedError
def close(self):
+ if self._closed:
+ return
self._closed = True
for proto in self._pipes.values():
except ProcessLookupError:
pass
- # Don't clear the _proc reference yet because _post_init() may
- # still run
+ # Don't clear the _proc reference yet: _post_init() may still run
# On Python 3.3 and older, objects with a destructor part of a reference
# cycle are never destroyed. It's not more the case on Python 3.4 thanks
return None
def _check_proc(self):
- if self._closed:
- raise ValueError("operation on closed transport")
if self._proc is None:
raise ProcessLookupError()
None, None, None, 0, waiter=waiter)
return (transport, protocol)
- def test_close(self):
- waiter = asyncio.Future(loop=self.loop)
- transport, protocol = self.create_transport(waiter)
- transport._process_exited(0)
- transport.close()
-
- # The loop didn't run yet
- self.assertFalse(protocol.connection_made.called)
-
- # methods must raise ProcessLookupError if the transport was closed
- self.assertRaises(ValueError, transport.send_signal, signal.SIGTERM)
- self.assertRaises(ValueError, transport.terminate)
- self.assertRaises(ValueError, transport.kill)
-
- self.loop.run_until_complete(waiter)
-
def test_proc_exited(self):
waiter = asyncio.Future(loop=self.loop)
transport, protocol = self.create_transport(waiter)