mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00

svn+ssh://pythondev@svn.python.org/python/trunk ........ r63542 | mark.dickinson | 2008-05-22 20:35:30 -0500 (Thu, 22 May 2008) | 5 lines Issue #2819: Add math.sum, a function that sums a sequence of floats efficiently but with no intermediate loss of precision. Based on Raymond Hettinger's ASPN recipe. Thanks Jean Brouwers for the patch. ........ r63543 | mark.dickinson | 2008-05-22 21:36:48 -0500 (Thu, 22 May 2008) | 2 lines Add tests for math.sum (Issue #2819) ........ r63544 | mark.dickinson | 2008-05-22 22:30:01 -0500 (Thu, 22 May 2008) | 2 lines Better error reporting in test_math.py ........ r63546 | raymond.hettinger | 2008-05-22 23:32:43 -0500 (Thu, 22 May 2008) | 1 line Tweak the comments and formatting. ........ r63553 | mark.dickinson | 2008-05-23 07:07:36 -0500 (Fri, 23 May 2008) | 3 lines Skip math.sum tests on non IEEE 754 platforms, and on IEEE 754 platforms that exhibit the problem described in issue #2937. ........ r63563 | martin.v.loewis | 2008-05-23 10:18:28 -0500 (Fri, 23 May 2008) | 3 lines Issue #1390: Raise ValueError in toxml when an invalid comment would otherwise be produced. ........ r63564 | raymond.hettinger | 2008-05-23 12:21:44 -0500 (Fri, 23 May 2008) | 1 line Issue 2909: show how to name unpacked fields. ........ r63567 | raymond.hettinger | 2008-05-23 12:34:34 -0500 (Fri, 23 May 2008) | 1 line Fix typo ........ r63569 | martin.v.loewis | 2008-05-23 14:33:13 -0500 (Fri, 23 May 2008) | 3 lines Mention that the leaking of variables from list comprehensions is fixed in 3.0. ........ r63576 | martin.v.loewis | 2008-05-24 04:36:45 -0500 (Sat, 24 May 2008) | 3 lines Don't try to get the window size if it was never set before. Fixes the test failure on Solaris. ........
67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
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")
|
|
|
|
try:
|
|
tty = open("/dev/tty", "r")
|
|
tty.close()
|
|
except IOError:
|
|
raise TestSkipped("Unable to open /dev/tty")
|
|
|
|
try:
|
|
import pty
|
|
except ImportError:
|
|
pty = None
|
|
|
|
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_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 & 0xffffffff
|
|
else:
|
|
set_winsz_opcode_pos = termios.TIOCSWINSZ
|
|
set_winsz_opcode_maybe_neg, = struct.unpack("i",
|
|
struct.pack("I", termios.TIOCSWINSZ))
|
|
|
|
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)
|
|
finally:
|
|
os.close(mfd)
|
|
os.close(sfd)
|
|
|
|
def test_main():
|
|
run_unittest(IoctlTests)
|
|
|
|
if __name__ == "__main__":
|
|
test_main()
|