summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-07-16 19:42:05 (GMT)
committerGuido van Rossum <guido@python.org>2007-07-16 19:42:05 (GMT)
commit456fe5d3cafc065b919fd4e8ba939c666f420dfa (patch)
tree9a0b84bba67157e3f37c56143687d5e2fa8e6df1 /Lib
parentb358a2c4233f0e8c3cc58b86ed84007cc16ea74d (diff)
downloadcpython-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.py117
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