mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-35721: Close socket pair if Popen in _UnixSubprocessTransport fails (GH-11553)
This slightly expands an existing test case `test_popen_error` to trigger a `ResourceWarning` and fixes it. https://bugs.python.org/issue35721
This commit is contained in:
parent
6d1c46746e
commit
9932fd91e8
4 changed files with 29 additions and 10 deletions
|
@ -468,9 +468,7 @@ class SubprocessMixin:
|
|||
isinstance(self, SubprocessFastWatcherTests)):
|
||||
asyncio.get_child_watcher()._callbacks.clear()
|
||||
|
||||
def test_popen_error(self):
|
||||
# Issue #24763: check that the subprocess transport is closed
|
||||
# when BaseSubprocessTransport fails
|
||||
def _test_popen_error(self, stdin):
|
||||
if sys.platform == 'win32':
|
||||
target = 'asyncio.windows_utils.Popen'
|
||||
else:
|
||||
|
@ -480,12 +478,23 @@ class SubprocessMixin:
|
|||
popen.side_effect = exc
|
||||
|
||||
create = asyncio.create_subprocess_exec(sys.executable, '-c',
|
||||
'pass', loop=self.loop)
|
||||
'pass', stdin=stdin,
|
||||
loop=self.loop)
|
||||
with warnings.catch_warnings(record=True) as warns:
|
||||
with self.assertRaises(exc):
|
||||
self.loop.run_until_complete(create)
|
||||
self.assertEqual(warns, [])
|
||||
|
||||
def test_popen_error(self):
|
||||
# Issue #24763: check that the subprocess transport is closed
|
||||
# when BaseSubprocessTransport fails
|
||||
self._test_popen_error(stdin=None)
|
||||
|
||||
def test_popen_error_with_stdin_pipe(self):
|
||||
# Issue #35721: check that newly created socket pair is closed when
|
||||
# Popen fails
|
||||
self._test_popen_error(stdin=subprocess.PIPE)
|
||||
|
||||
def test_read_stdout_after_process_exit(self):
|
||||
|
||||
async def execute():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue