diff options
author | Guido van Rossum <guido@python.org> | 2007-07-16 19:42:05 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-07-16 19:42:05 (GMT) |
commit | 456fe5d3cafc065b919fd4e8ba939c666f420dfa (patch) | |
tree | 9a0b84bba67157e3f37c56143687d5e2fa8e6df1 /Lib | |
parent | b358a2c4233f0e8c3cc58b86ed84007cc16ea74d (diff) | |
download | cpython-456fe5d3cafc065b919fd4e8ba939c666f420dfa.zip cpython-456fe5d3cafc065b919fd4e8ba939c666f420dfa.tar.gz cpython-456fe5d3cafc065b919fd4e8ba939c666f420dfa.tar.bz2 |
Fix a weird use of try/finally to close a file.
(There are more places that don't close 'f' at all if an error occurs,
but none have a bogus try/finally pattern.)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_mmap.py | 117 |
1 files changed, 57 insertions, 60 deletions
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index efd1b1e..b0f9e9e 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -29,86 +29,83 @@ class MmapTests(unittest.TestCase): f.write(b'\0'* (PAGESIZE-3) ) f.flush() m = mmap.mmap(f.fileno(), 2 * PAGESIZE) + finally: f.close() - # Simple sanity checks + # Simple sanity checks - tp = str(type(m)) # SF bug 128713: segfaulted on Linux - self.assertEqual(m.find('foo'), PAGESIZE) + tp = str(type(m)) # SF bug 128713: segfaulted on Linux + self.assertEqual(m.find('foo'), PAGESIZE) - self.assertEqual(len(m), 2*PAGESIZE) + self.assertEqual(len(m), 2*PAGESIZE) - self.assertEqual(m[0], b'\0') - self.assertEqual(m[0:3], b'\0\0\0') + self.assertEqual(m[0], b'\0') + self.assertEqual(m[0:3], b'\0\0\0') - # Modify the file's content - m[0] = b'3' - m[PAGESIZE +3: PAGESIZE +3+3] = b'bar' + # Modify the file's content + m[0] = b'3' + m[PAGESIZE +3: PAGESIZE +3+3] = b'bar' - # Check that the modification worked - self.assertEqual(m[0], b'3') - self.assertEqual(m[0:3], b'3\0\0') - self.assertEqual(m[PAGESIZE-1 : PAGESIZE + 7], b'\0foobar\0') + # Check that the modification worked + self.assertEqual(m[0], b'3') + self.assertEqual(m[0:3], b'3\0\0') + self.assertEqual(m[PAGESIZE-1 : PAGESIZE + 7], b'\0foobar\0') - m.flush() + m.flush() - # Test doing a regular expression match in an mmap'ed file - match = re.search('[A-Za-z]+', m) - if match is None: - self.fail('regex match on mmap failed!') - else: - start, end = match.span(0) - length = end - start + # Test doing a regular expression match in an mmap'ed file + match = re.search('[A-Za-z]+', m) + if match is None: + self.fail('regex match on mmap failed!') + else: + start, end = match.span(0) + length = end - start - self.assertEqual(start, PAGESIZE) - self.assertEqual(end, PAGESIZE + 6) + self.assertEqual(start, PAGESIZE) + self.assertEqual(end, PAGESIZE + 6) - # test seeking around (try to overflow the seek implementation) - m.seek(0,0) - self.assertEqual(m.tell(), 0) - m.seek(42,1) - self.assertEqual(m.tell(), 42) - m.seek(0,2) - self.assertEqual(m.tell(), len(m)) + # test seeking around (try to overflow the seek implementation) + m.seek(0,0) + self.assertEqual(m.tell(), 0) + m.seek(42,1) + self.assertEqual(m.tell(), 42) + m.seek(0,2) + self.assertEqual(m.tell(), len(m)) - # Try to seek to negative position... - self.assertRaises(ValueError, m.seek, -1) + # Try to seek to negative position... + self.assertRaises(ValueError, m.seek, -1) - # Try to seek beyond end of mmap... - self.assertRaises(ValueError, m.seek, 1, 2) + # Try to seek beyond end of mmap... + self.assertRaises(ValueError, m.seek, 1, 2) - # Try to seek to negative position... - self.assertRaises(ValueError, m.seek, -len(m)-1, 2) + # Try to seek to negative position... + self.assertRaises(ValueError, m.seek, -len(m)-1, 2) - # Try resizing map + # Try resizing map + try: + m.resize(512) + except SystemError: + # resize() not supported + # No messages are printed, since the output of this test suite + # would then be different across platforms. + pass + else: + # resize() is supported + self.assertEqual(len(m), 512) + # Check that we can no longer seek beyond the new size. + self.assertRaises(ValueError, m.seek, 513, 0) + + # Check that the underlying file is truncated too + # (bug #728515) + f = open(TESTFN) try: - m.resize(512) - except SystemError: - # resize() not supported - # No messages are printed, since the output of this test suite - # would then be different across platforms. - pass - else: - # resize() is supported - self.assertEqual(len(m), 512) - # Check that we can no longer seek beyond the new size. - self.assertRaises(ValueError, m.seek, 513, 0) - - # Check that the underlying file is truncated too - # (bug #728515) - f = open(TESTFN) f.seek(0, 2) self.assertEqual(f.tell(), 512) + finally: f.close() - self.assertEqual(m.size(), 512) + self.assertEqual(m.size(), 512) - m.close() - - finally: - try: - f.close() - except OSError: - pass + m.close() def test_access_parameter(self): # Test for "access" keyword parameter |