| import unittest |
| from test_support import TestSkipped, run_unittest |
| import os, struct |
| try: |
| import fcntl, termios |
| except ImportError: |
| raise TestSkipped("No fcntl or termios module") |
| if not hasattr(termios,'TIOCGPGRP'): |
| raise TestSkipped("termios module doesn't have TIOCGPGRP") |
| |
| try: |
| tty = open("/dev/tty", "r") |
| tty.close() |
| except IOError: |
| raise TestSkipped("Unable to open /dev/tty") |
| |
| class IoctlTests(unittest.TestCase): |
| def test_ioctl(self): |
| pgrp = os.getpgrp() |
| tty = open("/dev/tty", "r") |
| r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") |
| self.assertEquals(pgrp, struct.unpack("i", r)[0]) |
| |
| def test_ioctl_mutate(self): |
| import array |
| buf = array.array('i', [0]) |
| pgrp = os.getpgrp() |
| tty = open("/dev/tty", "r") |
| r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) |
| self.assertEquals(r, 0) |
| self.assertEquals(pgrp, buf[0]) |
| |
| def test_main(): |
| run_unittest(IoctlTests) |
| |
| if __name__ == "__main__": |
| test_main() |