Change test_mmap.py to use test_support.TESTFN instead of hardcoded "foo",
and wrap the body in try/finally to ensure TESTFN gets cleaned up no
matter what.
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 8066285..427f4e6 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -1,4 +1,4 @@
-from test_support import verify
+from test_support import verify, TESTFN, unlink
 import mmap
 import os, re, sys
 
@@ -7,118 +7,129 @@
 def test_both():
     "Test mmap module on Unix systems and Windows"
 
-    # Create an mmap'ed file
-    f = open('foo', 'w+')
+    # Create a file to be mmap'ed.
+    f = open(TESTFN, 'w+')
 
-    # Write 2 pages worth of data to the file
-    f.write('\0'* PAGESIZE)
-    f.write('foo')
-    f.write('\0'* (PAGESIZE-3) )
+    try:    # unlink TESTFN no matter what
+        # Write 2 pages worth of data to the file
+        f.write('\0'* PAGESIZE)
+        f.write('foo')
+        f.write('\0'* (PAGESIZE-3) )
 
-    m = mmap.mmap(f.fileno(), 2 * PAGESIZE)
-    f.close()
+        m = mmap.mmap(f.fileno(), 2 * PAGESIZE)
+        f.close()
 
-    # Simple sanity checks
+        # Simple sanity checks
 
-    print type(m)  # SF bug 128713:  segfaulted on Linux
-    print '  Position of foo:', m.find('foo') / float(PAGESIZE), 'pages'
-    verify(m.find('foo') == PAGESIZE)
+        print type(m)  # SF bug 128713:  segfaulted on Linux
+        print '  Position of foo:', m.find('foo') / float(PAGESIZE), 'pages'
+        verify(m.find('foo') == PAGESIZE)
 
-    print '  Length of file:', len(m) / float(PAGESIZE), 'pages'
-    verify(len(m) == 2*PAGESIZE)
+        print '  Length of file:', len(m) / float(PAGESIZE), 'pages'
+        verify(len(m) == 2*PAGESIZE)
 
-    print '  Contents of byte 0:', repr(m[0])
-    verify(m[0] == '\0')
-    print '  Contents of first 3 bytes:', repr(m[0:3])
-    verify(m[0:3] == '\0\0\0')
+        print '  Contents of byte 0:', repr(m[0])
+        verify(m[0] == '\0')
+        print '  Contents of first 3 bytes:', repr(m[0:3])
+        verify(m[0:3] == '\0\0\0')
 
-    # Modify the file's content
-    print "\n  Modifying file's content..."
-    m[0] = '3'
-    m[PAGESIZE +3: PAGESIZE +3+3]='bar'
+        # Modify the file's content
+        print "\n  Modifying file's content..."
+        m[0] = '3'
+        m[PAGESIZE +3: PAGESIZE +3+3]='bar'
 
-    # Check that the modification worked
-    print '  Contents of byte 0:', repr(m[0])
-    verify(m[0] == '3')
-    print '  Contents of first 3 bytes:', repr(m[0:3])
-    verify(m[0:3] == '3\0\0')
-    print '  Contents of second page:',  repr(m[PAGESIZE-1 : PAGESIZE + 7])
-    verify(m[PAGESIZE-1 : PAGESIZE + 7] == '\0foobar\0')
+        # Check that the modification worked
+        print '  Contents of byte 0:', repr(m[0])
+        verify(m[0] == '3')
+        print '  Contents of first 3 bytes:', repr(m[0:3])
+        verify(m[0:3] == '3\0\0')
+        print '  Contents of second page:',  repr(m[PAGESIZE-1 : PAGESIZE + 7])
+        verify(m[PAGESIZE-1 : PAGESIZE + 7] == '\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:
-        print '  ERROR: 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:
+            print '  ERROR: regex match on mmap failed!'
+        else:
+            start, end = match.span(0)
+            length = end - start
 
-        print '  Regex match on mmap (page start, length of match):',
-        print start / float(PAGESIZE), length
+            print '  Regex match on mmap (page start, length of match):',
+            print start / float(PAGESIZE), length
 
-        verify(start == PAGESIZE)
-        verify(end == PAGESIZE + 6)
+            verify(start == PAGESIZE)
+            verify(end == PAGESIZE + 6)
 
-    # test seeking around (try to overflow the seek implementation)
-    m.seek(0,0)
-    print '  Seek to zeroth byte'
-    verify(m.tell() == 0)
-    m.seek(42,1)
-    print '  Seek to 42nd byte'
-    verify(m.tell() == 42)
-    m.seek(0,2)
-    print '  Seek to last byte'
-    verify(m.tell() == len(m))
+        # test seeking around (try to overflow the seek implementation)
+        m.seek(0,0)
+        print '  Seek to zeroth byte'
+        verify(m.tell() == 0)
+        m.seek(42,1)
+        print '  Seek to 42nd byte'
+        verify(m.tell() == 42)
+        m.seek(0,2)
+        print '  Seek to last byte'
+        verify(m.tell() == len(m))
 
-    print '  Try to seek to negative position...'
-    try:
-        m.seek(-1)
-    except ValueError:
-        pass
-    else:
-        verify(0, 'expected a ValueError but did not get it')
-
-    print '  Try to seek beyond end of mmap...'
-    try:
-        m.seek(1,2)
-    except ValueError:
-        pass
-    else:
-        verify(0, 'expected a ValueError but did not get it')
-
-    print '  Try to seek to negative position...'
-    try:
-        m.seek(-len(m)-1,2)
-    except ValueError:
-        pass
-    else:
-        verify(0, 'expected a ValueError but did not get it')
-
-    # Try resizing map
-    print '  Attempting resize()'
-    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
-        verify(len(m) == 512,
-                "len(m) is %d, but expecting 512" % (len(m),) )
-        # Check that we can no longer seek beyond the new size.
+        print '  Try to seek to negative position...'
         try:
-            m.seek(513,0)
+            m.seek(-1)
         except ValueError:
             pass
         else:
-            verify(0, 'Could seek beyond the new size')
+            verify(0, 'expected a ValueError but did not get it')
 
-    m.close()
-    os.unlink("foo")
+        print '  Try to seek beyond end of mmap...'
+        try:
+            m.seek(1,2)
+        except ValueError:
+            pass
+        else:
+            verify(0, 'expected a ValueError but did not get it')
+
+        print '  Try to seek to negative position...'
+        try:
+            m.seek(-len(m)-1,2)
+        except ValueError:
+            pass
+        else:
+            verify(0, 'expected a ValueError but did not get it')
+
+        # Try resizing map
+        print '  Attempting resize()'
+        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
+            verify(len(m) == 512,
+                    "len(m) is %d, but expecting 512" % (len(m),) )
+            # Check that we can no longer seek beyond the new size.
+            try:
+                m.seek(513,0)
+            except ValueError:
+                pass
+            else:
+                verify(0, 'Could seek beyond the new size')
+
+        m.close()
+
+    finally:
+        try:
+            f.close()
+        except OSError:
+            pass
+        try:
+            unlink(TESTFN)
+        except OSError:
+            pass
+
     print ' Test passed'
 
 test_both()