Commit 6af3db86 authored by Gregory P. Smith's avatar Gregory P. Smith

Attempt to fix the Solaris Sparc 10 buildbot. It was failing with an invalid

argument error on ioctl.  This was caused by the added test_fcntl ioctl test
that hard coded 0 as the fd to use.  Without a terminal, this fails on solaris.
(it passed from the command line on sol 10, both 32 and 64 bit)

Also, test_ioctl exists so I moved the test into there where it belongs.
parent 45ea86c1
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
OS/2+EMX doesn't support the file locking operations. OS/2+EMX doesn't support the file locking operations.
""" """
import struct
import fcntl import fcntl
import os import os
import struct import struct
...@@ -11,12 +10,7 @@ import sys ...@@ -11,12 +10,7 @@ import sys
import unittest import unittest
from test.test_support import verbose, TESTFN, unlink, run_unittest from test.test_support import verbose, TESTFN, unlink, run_unittest
# TODO - Write tests for ioctl(), flock() and lockf(). # TODO - Write tests for flock() and lockf().
try:
import termios
except ImportError:
termios = None
def get_lockdata(): def get_lockdata():
if sys.platform.startswith('atheos'): if sys.platform.startswith('atheos'):
...@@ -88,29 +82,8 @@ class TestFcntl(unittest.TestCase): ...@@ -88,29 +82,8 @@ class TestFcntl(unittest.TestCase):
self.f.close() self.f.close()
class TestIoctl(unittest.TestCase):
if termios:
def test_ioctl_signed_unsigned_code_param(self):
if termios.TIOCSWINSZ < 0:
set_winsz_opcode_maybe_neg = termios.TIOCSWINSZ
set_winsz_opcode_pos = termios.TIOCSWINSZ & 0xffffffffL
else:
set_winsz_opcode_pos = termios.TIOCSWINSZ
set_winsz_opcode_maybe_neg, = struct.unpack("i",
struct.pack("I", termios.TIOCSWINSZ))
# We're just testing that these calls do not raise exceptions.
saved_winsz = fcntl.ioctl(0, termios.TIOCGWINSZ, "\0"*8)
our_winsz = struct.pack("HHHH",80,25,0,0)
# test both with a positive and potentially negative ioctl code
new_winsz = fcntl.ioctl(0, set_winsz_opcode_pos, our_winsz)
new_winsz = fcntl.ioctl(0, set_winsz_opcode_maybe_neg, our_winsz)
fcntl.ioctl(0, set_winsz_opcode_maybe_neg, saved_winsz)
def test_main(): def test_main():
run_unittest(TestFcntl) run_unittest(TestFcntl)
run_unittest(TestIoctl)
if __name__ == '__main__': if __name__ == '__main__':
test_main() test_main()
...@@ -14,6 +14,11 @@ try: ...@@ -14,6 +14,11 @@ try:
except IOError: except IOError:
raise TestSkipped("Unable to open /dev/tty") raise TestSkipped("Unable to open /dev/tty")
try:
import pty
except ImportError:
pty = None
class IoctlTests(unittest.TestCase): class IoctlTests(unittest.TestCase):
def test_ioctl(self): def test_ioctl(self):
# If this process has been put into the background, TIOCGPGRP returns # If this process has been put into the background, TIOCGPGRP returns
...@@ -34,6 +39,30 @@ class IoctlTests(unittest.TestCase): ...@@ -34,6 +39,30 @@ class IoctlTests(unittest.TestCase):
self.assertEquals(r, 0) self.assertEquals(r, 0)
self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
def test_ioctl_signed_unsigned_code_param(self):
if not pty:
raise TestSkipped('pty module required')
mfd, sfd = pty.openpty()
try:
if termios.TIOCSWINSZ < 0:
set_winsz_opcode_maybe_neg = termios.TIOCSWINSZ
set_winsz_opcode_pos = termios.TIOCSWINSZ & 0xffffffffL
else:
set_winsz_opcode_pos = termios.TIOCSWINSZ
set_winsz_opcode_maybe_neg, = struct.unpack("i",
struct.pack("I", termios.TIOCSWINSZ))
# We're just testing that these calls do not raise exceptions.
saved_winsz = fcntl.ioctl(mfd, termios.TIOCGWINSZ, "\0"*8)
our_winsz = struct.pack("HHHH",80,25,0,0)
# test both with a positive and potentially negative ioctl code
new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_pos, our_winsz)
new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_maybe_neg, our_winsz)
fcntl.ioctl(mfd, set_winsz_opcode_maybe_neg, saved_winsz)
finally:
os.close(mfd)
os.close(sfd)
def test_main(): def test_main():
run_unittest(IoctlTests) run_unittest(IoctlTests)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment