summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-01-27 16:38:17 (GMT)
committerGitHub <noreply@github.com>2024-01-27 16:38:17 (GMT)
commit7a470541e2bbc6f3e87a6d813e2ec42cf726de7a (patch)
tree55e9b21f1d49b9f730cb72146f690923993dc3f1
parenta384b20c0ce5aa520fa91ae0233d53642925525b (diff)
downloadcpython-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.py22
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."""