From: Antoine Pitrou Date: Wed, 24 Apr 2013 21:31:38 +0000 (+0200) Subject: Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one... X-Git-Tag: v2.7.5~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68915d75108e924d1ff74e707444c0d3ab405186;p=thirdparty%2FPython%2Fcpython.git Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one million bytes. --- diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 5cd28f5bea53..63a050893131 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -2880,7 +2880,7 @@ class SignalsTest(unittest.TestCase): # The buffered IO layer must check for pending signal # handlers, which in this case will invoke alarm_interrupt(). self.assertRaises(ZeroDivisionError, - wio.write, item * (3 * 1000 * 1000)) + wio.write, item * (support.PIPE_MAX_SIZE // len(item) + 1)) t.join() # We got one byte, get another one and check that it isn't a # repeat of the first one. @@ -2978,7 +2978,7 @@ class SignalsTest(unittest.TestCase): select = support.import_module("select") # A quantity that exceeds the buffer size of an anonymous pipe's # write end. - N = 1024 * 1024 + N = support.PIPE_MAX_SIZE r, w = os.pipe() fdopen_kwargs["closefd"] = False # We need a separate thread to read from the pipe and allow the diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 33de78818034..1a1cac883c66 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -400,6 +400,15 @@ def fcmp(x, y): # fuzzy comparison function return (len(x) > len(y)) - (len(x) < len(y)) return (x > y) - (x < y) + +# A constant likely larger than the underlying OS pipe buffer size, to +# make writes blocking. +# Windows limit seems to be around 512 B, and many Unix kernels have a +# 64 KiB pipe buffer size or 16 * PAGE_SIZE: take a few megs to be sure. +# (see issue #17835 for a discussion of this number). +PIPE_MAX_SIZE = 4 *1024 * 1024 + 1 + + try: unicode have_unicode = True diff --git a/Misc/NEWS b/Misc/NEWS index 9804b0e0fcd0..cdcf9e5b597b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -131,6 +131,9 @@ IDLE Tests ----- +- Issue #17835: Fix test_io when the default OS pipe buffer size is larger + than one million bytes. + - Issue #17531: Fix tests that thought group and user ids were always the int type. Also, always allow -1 as a valid group and user id.