bpo-41818: Fix test_master_read() so that it succeeds on all platforms that either raise OSError or return b"" upon reading from master (GH-23536)
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py
index a45be28..190d8d7 100644
--- a/Lib/test/test_pty.py
+++ b/Lib/test/test_pty.py
@@ -17,7 +17,6 @@
import struct
import tty
import fcntl
-import platform
import warnings
TEST_STRING_1 = b"I wish to buy a fish license.\n"
@@ -82,12 +81,6 @@ def expectedFailureIfStdinIsTTY(fun):
pass
return fun
-def expectedFailureOnBSD(fun):
- PLATFORM = platform.system()
- if PLATFORM.endswith("BSD") or PLATFORM == "Darwin":
- return unittest.expectedFailure(fun)
- return fun
-
def _get_term_winsz(fd):
s = struct.pack("HHHH", 0, 0, 0, 0)
return fcntl.ioctl(fd, _TIOCGWINSZ, s)
@@ -314,7 +307,6 @@ def test_fork(self):
os.close(master_fd)
- @expectedFailureOnBSD
def test_master_read(self):
debug("Calling pty.openpty()")
master_fd, slave_fd = pty.openpty()
@@ -324,10 +316,13 @@ def test_master_read(self):
os.close(slave_fd)
debug("Reading from master_fd")
- with self.assertRaises(OSError):
- os.read(master_fd, 1)
+ try:
+ data = os.read(master_fd, 1)
+ except OSError: # Linux
+ data = b""
os.close(master_fd)
+ self.assertEqual(data, b"")
class SmallPtyTests(unittest.TestCase):
"""These tests don't spawn children or hang."""