blob: 47851072c14ddc743809c0afe93fae430a228809 [file] [log] [blame]
Guido van Rossuma0f7e852000-07-01 01:13:31 +00001# Test to see if openpty works. (But don't worry if it isn't available.)
2
Thomas Wouters89f507f2006-12-13 04:49:30 +00003import os, unittest
Benjamin Petersone549ead2009-03-28 21:42:05 +00004from test.support import run_unittest
Guido van Rossuma0f7e852000-07-01 01:13:31 +00005
Thomas Wouters89f507f2006-12-13 04:49:30 +00006if not hasattr(os, "openpty"):
Brett Cannoncd8efa32012-11-14 15:16:53 -05007 raise unittest.SkipTest("os.openpty() not available.")
Guido van Rossuma0f7e852000-07-01 01:13:31 +00008
Guido van Rossuma0f7e852000-07-01 01:13:31 +00009
Thomas Wouters89f507f2006-12-13 04:49:30 +000010class OpenptyTest(unittest.TestCase):
11 def test(self):
12 master, slave = os.openpty()
Richard Oudkerk0e547b62013-06-10 16:29:19 +010013 self.addCleanup(os.close, master)
14 self.addCleanup(os.close, slave)
Thomas Wouters89f507f2006-12-13 04:49:30 +000015 if not os.isatty(slave):
16 self.fail("Slave-end of pty is not a terminal.")
17
Guido van Rossumdc089b62007-05-30 00:58:53 +000018 os.write(slave, b'Ping!')
19 self.assertEqual(os.read(master, 1024), b'Ping!')
Thomas Wouters89f507f2006-12-13 04:49:30 +000020
21def test_main():
22 run_unittest(OpenptyTest)
23
24if __name__ == '__main__':
25 test_main()