[Python-3000-checkins] r56401 - python/branches/py3k-struni/Lib/test/test_mmap.py

guido.van.rossum python-3000-checkins at python.org
Mon Jul 16 21:42:05 CEST 2007


Author: guido.van.rossum
Date: Mon Jul 16 21:42:05 2007
New Revision: 56401

Modified:
   python/branches/py3k-struni/Lib/test/test_mmap.py
Log:
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.)


Modified: python/branches/py3k-struni/Lib/test/test_mmap.py
==============================================================================
--- python/branches/py3k-struni/Lib/test/test_mmap.py	(original)
+++ python/branches/py3k-struni/Lib/test/test_mmap.py	Mon Jul 16 21:42:05 2007
@@ -29,86 +29,83 @@
             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))
-
-            # Try to seek to negative position...
-            self.assertRaises(ValueError, m.seek, -1)
+        # 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 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


More information about the Python-3000-checkins mailing list