]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-114100: Remove superfluous writing to fd 1 in test_pty (GH-114647) (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 27 Jan 2024 17:30:11 +0000 (18:30 +0100)
committerGitHub <noreply@github.com>
Sat, 27 Jan 2024 17:30:11 +0000 (19:30 +0200)
(cherry picked from commit 7a470541e2bbc6f3e87a6d813e2ec42cf726de7a)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/test/test_pty.py

index f31a68c5d84e037585b69cfed1d83877bd2ab3c5..51e3a46d0df178072ccbb8973a94fcc4ed926512 100644 (file)
@@ -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."""