summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_ioctl.py
diff options
context:
space:
mode:
authorMichael W. Hudson <mwh@python.net>2003-03-03 12:29:42 (GMT)
committerMichael W. Hudson <mwh@python.net>2003-03-03 12:29:42 (GMT)
commitf00899866888408106fea4147a9d2cdc2f1e8dbc (patch)
tree32aae5a6d01192bc79456886bd8d299ad84ecdeb /Lib/test/test_ioctl.py
parent122152451e1bc7aaff69d28b8950afa7848c6de6 (diff)
downloadcpython-f00899866888408106fea4147a9d2cdc2f1e8dbc.zip
cpython-f00899866888408106fea4147a9d2cdc2f1e8dbc.tar.gz
cpython-f00899866888408106fea4147a9d2cdc2f1e8dbc.tar.bz2
Fix bug
[ 555817 ] Flawed fcntl.ioctl implementation. with my patch that allows for an array to be mutated when passed as the buffer argument to ioctl() (details complicated by backwards compatibility considerations -- read the docs!).
Diffstat (limited to 'Lib/test/test_ioctl.py')
-rw-r--r--Lib/test/test_ioctl.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py
new file mode 100644
index 0000000..a6a59c5
--- /dev/null
+++ b/Lib/test/test_ioctl.py
@@ -0,0 +1,31 @@
+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")
+
+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()