]> granicus.if.org Git - python/commitdiff
A few days ago a test was added here to ensure that creating an mmap
authorTim Peters <tim.peters@gmail.com>
Tue, 10 Sep 2002 20:49:15 +0000 (20:49 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 10 Sep 2002 20:49:15 +0000 (20:49 +0000)
with a size larger than the underlying file worked on Windows.  It
does <wink>.  However, merely creating an mmap that way has the side
effect of growing the file on disk to match the specified size.  A
*later* test assumed that the file on disk was still exactly as it was
before the new "size too big" test was added, but that's no longer true.
So added a hack at the end of the "size too big" test to truncate the
disk file back to its original size on Windows.

Lib/test/test_mmap.py

index 3322c3858c822bd5b09ad312c3b5576d1414ce97..26dbc4ac39419550e9d77d95c33ab61573906e2b 100644 (file)
@@ -102,7 +102,7 @@ def test_both():
         # Try resizing map
         print '  Attempting resize()'
         try:
-            m.resize( 512 )
+            m.resize(512)
         except SystemError:
             # resize() not supported
             # No messages are printed, since the output of this test suite
@@ -196,14 +196,22 @@ def test_both():
             m = mmap.mmap(f.fileno(), mapsize+1)
         except ValueError:
             # we do not expect a ValueError on Windows
+            # CAUTION:  This also changes the size of the file on disk, and
+            # later tests assume that the length hasn't changed.  We need to
+            # repair that.
             if sys.platform.startswith('win'):
                 verify(0, "Opening mmap with size+1 should work on Windows.")
         else:
             # we expect a ValueError on Unix, but not on Windows
             if not sys.platform.startswith('win'):
                 verify(0, "Opening mmap with size+1 should raise ValueError.")
-            del m
-        del f
+        m.close()
+        f.close()
+        if sys.platform.startswith('win'):
+            # Repair damage from the resizing test.
+            f = open(TESTFN, 'r+b')
+            f.truncate(mapsize)
+            f.close()
 
         print "  Opening mmap with access=ACCESS_WRITE"
         f = open(TESTFN, "r+b")
@@ -214,7 +222,10 @@ def test_both():
                "Write-through memory map memory not updated properly.")
         m.flush()
         del m, f
-        verify(open(TESTFN).read() == 'c'*mapsize,
+        f = open(TESTFN, 'rb')
+        stuff = f.read()
+        f.close()
+        verify(open(TESTFN, 'rb').read() == 'c'*mapsize,
                "Write-through memory map data file not updated properly.")
 
         print "  Opening mmap with access=ACCESS_COPY"