Exceptions raised during renaming in rotating file handlers are now passed to handleE...
[python.git] / Lib / test / test_ioctl.py
blob2b127e2b4a95f94104ed909d0486ba8a04f3f10f
1 import unittest
2 from test.test_support import TestSkipped, run_unittest
3 import os, struct
4 try:
5 import fcntl, termios
6 except ImportError:
7 raise TestSkipped("No fcntl or termios module")
8 if not hasattr(termios,'TIOCGPGRP'):
9 raise TestSkipped("termios module doesn't have TIOCGPGRP")
11 try:
12 tty = open("/dev/tty", "r")
13 tty.close()
14 except IOError:
15 raise TestSkipped("Unable to open /dev/tty")
17 class IoctlTests(unittest.TestCase):
18 def test_ioctl(self):
19 # If this process has been put into the background, TIOCGPGRP returns
20 # the session ID instead of the process group id.
21 ids = (os.getpgrp(), os.getsid(0))
22 tty = open("/dev/tty", "r")
23 r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ")
24 rpgrp = struct.unpack("i", r)[0]
25 self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
27 def test_ioctl_mutate(self):
28 import array
29 buf = array.array('i', [0])
30 ids = (os.getpgrp(), os.getsid(0))
31 tty = open("/dev/tty", "r")
32 r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1)
33 rpgrp = buf[0]
34 self.assertEquals(r, 0)
35 self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
37 def test_main():
38 run_unittest(IoctlTests)
40 if __name__ == "__main__":
41 test_main()