blob: d513c9c62272d73014801069eee16939ec632744 [file] [log] [blame]
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +02001#!/usr/bin/env python
2#
3# This file is part of pySerial - Cross platform serial port support for Python
Chris Liechtia7db97c2016-05-10 23:46:38 +02004# (C) 2016 Chris Liechti <cliechti@gmx.net>
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +02005#
6# SPDX-License-Identifier: BSD-3-Clause
7"""
8Test PTY related functionality.
9"""
10
11import os
12import sys
Chris Liechtia7db97c2016-05-10 23:46:38 +020013
14try:
15 import pty
16except ImportError:
17 pty = None
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +020018import unittest
19import serial
20
21
Chris Liechtia7db97c2016-05-10 23:46:38 +020022@unittest.skipIf(pty is None, "pty module not supported on platform")
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +020023class Test_Pty_Serial_Open(unittest.TestCase):
24 """Test PTY serial open"""
25
26 def setUp(self):
27 # Open PTY
28 self.master, self.slave = pty.openpty()
29
Chris Liechti508d8422017-03-10 02:06:36 +010030 def test_pty_serial_open_slave(self):
31 with serial.Serial(os.ttyname(self.slave), timeout=1) as slave:
32 pass # OK
33
34 def test_pty_serial_write(self):
Chris Liechti88e10642017-03-09 23:56:19 +010035 with serial.Serial(os.ttyname(self.slave), timeout=1) as slave:
36 with os.fdopen(self.master, "wb") as fd:
37 fd.write(DATA)
38 fd.flush()
39 out = slave.read(len(DATA))
40 self.assertEqual(DATA, out)
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +020041
Chris Liechti508d8422017-03-10 02:06:36 +010042 def test_pty_serial_read(self):
43 with serial.Serial(os.ttyname(self.slave), timeout=1) as slave:
44 with os.fdopen(self.master, "rb") as fd:
45 slave.write(DATA)
46 slave.flush()
47 out = fd.read(len(DATA))
48 self.assertEqual(DATA, out)
Miguel Sánchez de León Peque8eb2fd82016-05-08 15:37:14 +020049
50if __name__ == '__main__':
51 sys.stdout.write(__doc__)
52 # When this module is executed from the command-line, it runs all its tests
53 unittest.main()