summaryrefslogtreecommitdiff
path: root/sys/lib/python/test/test_ioctl.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/test/test_ioctl.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/lib/python/test/test_ioctl.py')
-rw-r--r--sys/lib/python/test/test_ioctl.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/sys/lib/python/test/test_ioctl.py b/sys/lib/python/test/test_ioctl.py
new file mode 100644
index 000000000..2b127e2b4
--- /dev/null
+++ b/sys/lib/python/test/test_ioctl.py
@@ -0,0 +1,41 @@
+import unittest
+from test.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):
+ # If this process has been put into the background, TIOCGPGRP returns
+ # the session ID instead of the process group id.
+ ids = (os.getpgrp(), os.getsid(0))
+ tty = open("/dev/tty", "r")
+ r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ")
+ rpgrp = struct.unpack("i", r)[0]
+ self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
+
+ def test_ioctl_mutate(self):
+ import array
+ buf = array.array('i', [0])
+ ids = (os.getpgrp(), os.getsid(0))
+ tty = open("/dev/tty", "r")
+ r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1)
+ rpgrp = buf[0]
+ self.assertEquals(r, 0)
+ self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
+
+def test_main():
+ run_unittest(IoctlTests)
+
+if __name__ == "__main__":
+ test_main()