diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2024-01-27 16:38:17 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-27 16:38:17 (GMT) |
commit | 7a470541e2bbc6f3e87a6d813e2ec42cf726de7a (patch) | |
tree | 55e9b21f1d49b9f730cb72146f690923993dc3f1 | |
parent | a384b20c0ce5aa520fa91ae0233d53642925525b (diff) | |
download | cpython-7a470541e2bbc6f3e87a6d813e2ec42cf726de7a.zip cpython-7a470541e2bbc6f3e87a6d813e2ec42cf726de7a.tar.gz cpython-7a470541e2bbc6f3e87a6d813e2ec42cf726de7a.tar.bz2 |
gh-114100: Remove superfluous writing to fd 1 in test_pty (GH-114647)
-rw-r--r-- | Lib/test/test_pty.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py index f31a68c..51e3a46 100644 --- a/Lib/test/test_pty.py +++ b/Lib/test/test_pty.py @@ -1,4 +1,5 @@ from test.support import verbose, reap_children +from test.support.os_helper import TESTFN, unlink from test.support.import_helper import import_module # Skip these tests if termios or fcntl are not available @@ -292,7 +293,26 @@ class PtyTest(unittest.TestCase): self.assertEqual(data, b"") def test_spawn_doesnt_hang(self): - pty.spawn([sys.executable, '-c', 'print("hi there")']) + self.addCleanup(unlink, TESTFN) + with open(TESTFN, 'wb') as f: + STDOUT_FILENO = 1 + dup_stdout = os.dup(STDOUT_FILENO) + os.dup2(f.fileno(), STDOUT_FILENO) + buf = b'' + def master_read(fd): + nonlocal buf + data = os.read(fd, 1024) + buf += data + return data + try: + pty.spawn([sys.executable, '-c', 'print("hi there")'], + master_read) + finally: + os.dup2(dup_stdout, STDOUT_FILENO) + os.close(dup_stdout) + self.assertEqual(buf, b'hi there\r\n') + with open(TESTFN, 'rb') as f: + self.assertEqual(f.read(), b'hi there\r\n') class SmallPtyTests(unittest.TestCase): """These tests don't spawn children or hang.""" |