(root)/
Python-3.11.7/
Lib/
test/
test_tty.py
       1  import os
       2  import unittest
       3  from test.support.import_helper import import_module
       4  
       5  termios = import_module('termios')
       6  tty = import_module('tty')
       7  
       8  
       9  @unittest.skipUnless(hasattr(os, 'openpty'), "need os.openpty()")
      10  class ESC[4;38;5;81mTestTty(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      11  
      12      def setUp(self):
      13          master_fd, self.fd = os.openpty()
      14          self.addCleanup(os.close, master_fd)
      15          self.stream = self.enterContext(open(self.fd, 'wb', buffering=0))
      16          self.fd = self.stream.fileno()
      17          self.mode = termios.tcgetattr(self.fd)
      18          self.addCleanup(termios.tcsetattr, self.fd, termios.TCSANOW, self.mode)
      19          self.addCleanup(termios.tcsetattr, self.fd, termios.TCSAFLUSH, self.mode)
      20  
      21      def check_cbreak(self, mode):
      22          self.assertEqual(mode[3] & termios.ECHO, 0)
      23          self.assertEqual(mode[3] & termios.ICANON, 0)
      24          self.assertEqual(mode[6][termios.VMIN], 1)
      25          self.assertEqual(mode[6][termios.VTIME], 0)
      26  
      27      def check_raw(self, mode):
      28          self.assertEqual(mode[0] & termios.ICRNL, 0)
      29          self.check_cbreak(mode)
      30          self.assertEqual(mode[0] & termios.ISTRIP, 0)
      31          self.assertEqual(mode[0] & termios.ICRNL, 0)
      32          self.assertEqual(mode[1] & termios.OPOST, 0)
      33          self.assertEqual(mode[2] & termios.PARENB, termios.CS8 & termios.PARENB)
      34          self.assertEqual(mode[2] & termios.CSIZE, termios.CS8 & termios.CSIZE)
      35          self.assertEqual(mode[2] & termios.CS8, termios.CS8)
      36          self.assertEqual(mode[3] & termios.ECHO, 0)
      37          self.assertEqual(mode[3] & termios.ICANON, 0)
      38          self.assertEqual(mode[3] & termios.ISIG, 0)
      39          self.assertEqual(mode[6][termios.VMIN], 1)
      40          self.assertEqual(mode[6][termios.VTIME], 0)
      41  
      42      def test_setraw(self):
      43          tty.setraw(self.fd)
      44          mode = termios.tcgetattr(self.fd)
      45          self.check_raw(mode)
      46          tty.setraw(self.fd, termios.TCSANOW)
      47          tty.setraw(self.stream)
      48          tty.setraw(fd=self.fd, when=termios.TCSANOW)
      49  
      50      def test_setcbreak(self):
      51          tty.setcbreak(self.fd)
      52          mode = termios.tcgetattr(self.fd)
      53          self.check_cbreak(mode)
      54          tty.setcbreak(self.fd, termios.TCSANOW)
      55          tty.setcbreak(self.stream)
      56          tty.setcbreak(fd=self.fd, when=termios.TCSANOW)
      57  
      58  
      59  if __name__ == '__main__':
      60      unittest.main()