2 from test
.test_support
import TestSkipped
, run_unittest
7 raise TestSkipped("No fcntl or termios module")
8 if not hasattr(termios
,'TIOCGPGRP'):
9 raise TestSkipped("termios module doesn't have TIOCGPGRP")
12 tty
= open("/dev/tty", "r")
15 raise TestSkipped("Unable to open /dev/tty")
17 class IoctlTests(unittest
.TestCase
):
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
):
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)
34 self
.assertEquals(r
, 0)
35 self
.assert_(rpgrp
in ids
, "%s not in %s" % (rpgrp
, ids
))
38 run_unittest(IoctlTests
)
40 if __name__
== "__main__":