diff -r 027494c8ddaf Lib/test/test_os.py --- a/Lib/test/test_os.py Mon Jul 07 15:18:52 2014 +0300 +++ b/Lib/test/test_os.py Mon Jul 07 17:23:19 2014 +0300 @@ -43,6 +43,10 @@ import _winapi except ImportError: _winapi = None +try: + from _testcapi import INT_MAX, PY_SSIZE_T_MAX +except ImportError: + INT_MAX = PY_SSIZE_T_MAX = sys.maxsize from test.script_helper import assert_python_ok @@ -119,6 +123,23 @@ self.assertEqual(type(s), bytes) self.assertEqual(s, b"spam") + @support.cpython_only + @unittest.skipIf(sys.platform == "win32", "Posix specific tests") + @unittest.skipUnless(INT_MAX < PY_SSIZE_T_MAX, + "needs INT_MAX < PY_SSIZE_T_MAX") + @support.bigmemtest(size=INT_MAX + 1, memuse=1, dry_run=False) + def test_large_read(self, size): + try: + fd = os.open('/dev/zero', os.O_RDONLY) + except OSError: + self.skipTest('needs /dev/zero') + try: + s = os.read(fd, size) + finally: + os.close(fd) + self.assertEqual(type(s), bytes) + self.assertEqual(len(s), size) + def test_write(self): # os.write() accepts bytes- and buffer-like objects but not strings fd = os.open(support.TESTFN, os.O_CREAT | os.O_WRONLY)