diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py index 7c17066f8bb26c..b547c444ad5d1c 100644 --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -57,7 +57,7 @@ def __repr__(self): if self._closed: info.append('closed') if self._pid is not None: - info.append(f'pid={self.pid}') + info.append(f'pid={self._pid}') if self._returncode is not None: info.append(f'returncode={self._returncode}') elif self._pid is not None: diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 81b08d6c292af0..428510f7716125 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -29,6 +29,7 @@ def _start(self, *args, **kwargs): self._proc.stdin = None self._proc.stdout = None self._proc.stderr = None + self._proc.pid = -1 class SubprocessTransportTests(test_utils.TestCase): @@ -73,6 +74,29 @@ def test_proc_exited(self): transport.close() + def test_subprocess_repr(self): + waiter = asyncio.Future(loop=self.loop) + transport, protocol = self.create_transport(waiter) + transport._process_exited(6) + self.loop.run_until_complete(waiter) + + self.assertEqual( + repr(transport), + "" + ) + transport._returncode = None + self.assertEqual( + repr(transport), + "" + ) + transport._pid = None + transport._returncode = None + self.assertEqual( + repr(transport), + "" + ) + transport.close() + class SubprocessMixin: