diff options
Diffstat (limited to 'test/test_pty.py')
-rw-r--r-- | test/test_pty.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/test_pty.py b/test/test_pty.py new file mode 100644 index 0000000..6606ff7 --- /dev/null +++ b/test/test_pty.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# +# This file is part of pySerial - Cross platform serial port support for Python +# (C) 2016 Chris Liechti <cliechti@gmx.net> +# +# SPDX-License-Identifier: BSD-3-Clause +""" +Test PTY related functionality. +""" + +import os +import sys + +try: + import pty +except ImportError: + pty = None +import unittest +import serial + +DATA = b'Hello\n' + +@unittest.skipIf(pty is None, "pty module not supported on platform") +class Test_Pty_Serial_Open(unittest.TestCase): + """Test PTY serial open""" + + def setUp(self): + # Open PTY + self.master, self.slave = pty.openpty() + + def test_pty_serial_open_slave(self): + with serial.Serial(os.ttyname(self.slave), timeout=1) as slave: + pass # OK + + def test_pty_serial_write(self): + with serial.Serial(os.ttyname(self.slave), timeout=1) as slave: + with os.fdopen(self.master, "wb") as fd: + fd.write(DATA) + fd.flush() + out = slave.read(len(DATA)) + self.assertEqual(DATA, out) + + def test_pty_serial_read(self): + with serial.Serial(os.ttyname(self.slave), timeout=1) as slave: + with os.fdopen(self.master, "rb") as fd: + slave.write(DATA) + slave.flush() + out = fd.read(len(DATA)) + self.assertEqual(DATA, out) + +if __name__ == '__main__': + sys.stdout.write(__doc__) + # When this module is executed from the command-line, it runs all its tests + unittest.main() |