From: Nadeem Vawda Date: Sat, 7 May 2011 12:16:50 +0000 (+0200) Subject: Merge: #11277: Fix tests - crash will not trigger if the file is closed and reopened. X-Git-Tag: v3.2.1b1~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=044dfadd1c94cd9e69f15346e6ba0c9d4ef7a60d;p=thirdparty%2FPython%2Fcpython.git Merge: #11277: Fix tests - crash will not trigger if the file is closed and reopened. --- 044dfadd1c94cd9e69f15346e6ba0c9d4ef7a60d diff --cc Lib/test/test_mmap.py index be588cfb99bf,0a177c66a2bd..850768f069a9 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@@ -667,25 -658,30 +667,24 @@@ class LargeMmapTests(unittest.TestCase) if sys.platform[:3] == 'win' or sys.platform == 'darwin': requires('largefile', 'test requires %s bytes and a long time to run' % str(0x180000000)) - with open(TESTFN, 'wb') as f: - try: - f.seek(num_zeroes) - f.write(tail) - f.flush() - except (IOError, OverflowError): - raise unittest.SkipTest("filesystem does not have largefile support") + f = open(TESTFN, 'w+b') + try: + f.seek(num_zeroes) + f.write(tail) + f.flush() + except (IOError, OverflowError): + raise unittest.SkipTest("filesystem does not have largefile support") + return f def test_large_offset(self): - self._create_test_file(0x14FFFFFFF, b" ") - with open(TESTFN, 'rb') as f: + with self._make_test_file(0x14FFFFFFF, b" ") as f: - m = mmap.mmap(f.fileno(), 0, offset=0x140000000, access=mmap.ACCESS_READ) - try: + with mmap.mmap(f.fileno(), 0, offset=0x140000000, access=mmap.ACCESS_READ) as m: self.assertEqual(m[0xFFFFFFF], 32) - finally: - m.close() def test_large_filesize(self): - self._create_test_file(0x17FFFFFFF, b" ") - with open(TESTFN, 'rb') as f: + with self._make_test_file(0x17FFFFFFF, b" ") as f: - m = mmap.mmap(f.fileno(), 0x10000, access=mmap.ACCESS_READ) - try: + with mmap.mmap(f.fileno(), 0x10000, access=mmap.ACCESS_READ) as m: self.assertEqual(m.size(), 0x180000000) - finally: - m.close() # Issue 11277: mmap() with large (~4GB) sparse files crashes on OS X. @@@ -693,10 -689,12 +692,9 @@@ tail = b' DEARdear ' start = boundary - len(tail) // 2 end = start + len(tail) - self._create_test_file(start, tail) - with open(TESTFN, 'rb') as f: + with self._make_test_file(start, tail) as f: - m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) - try: + with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as m: self.assertEqual(m[start:end], tail) - finally: - m.close() @unittest.skipUnless(sys.maxsize > _4G, "test cannot run on 32-bit systems") def test_around_2GB(self):