mirror of https://github.com/python/cpython
Merge 3.4 (asyncio)
This commit is contained in:
commit
934fa344c8
|
@ -84,6 +84,8 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
if self._closed:
|
||||||
|
return
|
||||||
self._closed = True
|
self._closed = True
|
||||||
|
|
||||||
for proto in self._pipes.values():
|
for proto in self._pipes.values():
|
||||||
|
@ -100,8 +102,7 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
|
||||||
except ProcessLookupError:
|
except ProcessLookupError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Don't clear the _proc reference yet because _post_init() may
|
# Don't clear the _proc reference yet: _post_init() may still run
|
||||||
# still run
|
|
||||||
|
|
||||||
# On Python 3.3 and older, objects with a destructor part of a reference
|
# 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
|
# cycle are never destroyed. It's not more the case on Python 3.4 thanks
|
||||||
|
@ -125,8 +126,6 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _check_proc(self):
|
def _check_proc(self):
|
||||||
if self._closed:
|
|
||||||
raise ValueError("operation on closed transport")
|
|
||||||
if self._proc is None:
|
if self._proc is None:
|
||||||
raise ProcessLookupError()
|
raise ProcessLookupError()
|
||||||
|
|
||||||
|
|
|
@ -47,22 +47,6 @@ class SubprocessTransportTests(test_utils.TestCase):
|
||||||
None, None, None, 0, waiter=waiter)
|
None, None, None, 0, waiter=waiter)
|
||||||
return (transport, protocol)
|
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):
|
def test_proc_exited(self):
|
||||||
waiter = asyncio.Future(loop=self.loop)
|
waiter = asyncio.Future(loop=self.loop)
|
||||||
transport, protocol = self.create_transport(waiter)
|
transport, protocol = self.create_transport(waiter)
|
||||||
|
|
Loading…
Reference in New Issue