[Python-checkins] python/dist/src/Lib/test test_largefile.py, 1.16, 1.17

jlt63 at users.sourceforge.net jlt63 at users.sourceforge.net
Tue Aug 26 05:59:29 EDT 2003


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv1893

Modified Files:
	test_largefile.py 
Log Message:
test_largefile can leave its temp file open if one of many tests fail. On
platforms (e.g., Cygwin) that are "particular" about open files, this will
cause other regression tests that use the same temp file to fail:

    $ ./python.exe -E -tt Lib/test/regrtest.py -l 
    test_largefile test_mmap test_mutants 
    test_largefile
    test test_largefile failed -- got -1794967295L, but expected 2500000001L
    test_mmap
    test test_mmap crashed -- exceptions.IOError: [Errno 13] Permission denied: '@test'
    test_mutants
    test test_mutants crashed -- exceptions.IOError: [Errno 13] Permission denied: '@test'

This patch solves the problem by adding missing "try/finally" blocks. Note
that the "large" size of this patch is due to many white space changes --
otherwise, the patch is small.

I tested this patch under Red Hat Linux 8.0 too.


Index: test_largefile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_largefile.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** test_largefile.py	2 Dec 2002 10:42:30 -0000	1.16
--- test_largefile.py	26 Aug 2003 11:59:27 -0000	1.17
***************
*** 70,82 ****
      print 'create large file via seek (may be sparse file) ...'
  f = open(name, 'wb')
! f.write('z')
! f.seek(0)
! f.seek(size)
! f.write('a')
! f.flush()
! if test_support.verbose:
!     print 'check file size with os.fstat'
! expect(os.fstat(f.fileno())[stat.ST_SIZE], size+1)
! f.close()
  if test_support.verbose:
      print 'check file size with os.stat'
--- 70,84 ----
      print 'create large file via seek (may be sparse file) ...'
  f = open(name, 'wb')
! try:
!     f.write('z')
!     f.seek(0)
!     f.seek(size)
!     f.write('a')
!     f.flush()
!     if test_support.verbose:
!         print 'check file size with os.fstat'
!     expect(os.fstat(f.fileno())[stat.ST_SIZE], size+1)
! finally:
!     f.close()
  if test_support.verbose:
      print 'check file size with os.stat'
***************
*** 86,131 ****
      print 'play around with seek() and read() with the built largefile'
  f = open(name, 'rb')
! expect(f.tell(), 0)
! expect(f.read(1), 'z')
! expect(f.tell(), 1)
! f.seek(0)
! expect(f.tell(), 0)
! f.seek(0, 0)
! expect(f.tell(), 0)
! f.seek(42)
! expect(f.tell(), 42)
! f.seek(42, 0)
! expect(f.tell(), 42)
! f.seek(42, 1)
! expect(f.tell(), 84)
! f.seek(0, 1)
! expect(f.tell(), 84)
! f.seek(0, 2) # seek from the end
! expect(f.tell(), size + 1 + 0)
! f.seek(-10, 2)
! expect(f.tell(), size + 1 - 10)
! f.seek(-size-1, 2)
! expect(f.tell(), 0)
! f.seek(size)
! expect(f.tell(), size)
! expect(f.read(1), 'a') # the 'a' that was written at the end of the file above
! f.seek(-size-1, 1)
! expect(f.read(1), 'z')
! expect(f.tell(), 1)
! f.close()
  
  if test_support.verbose:
      print 'play around with os.lseek() with the built largefile'
  f = open(name, 'rb')
! expect(os.lseek(f.fileno(), 0, 0), 0)
! expect(os.lseek(f.fileno(), 42, 0), 42)
! expect(os.lseek(f.fileno(), 42, 1), 84)
! expect(os.lseek(f.fileno(), 0, 1), 84)
! expect(os.lseek(f.fileno(), 0, 2), size+1+0)
! expect(os.lseek(f.fileno(), -10, 2), size+1-10)
! expect(os.lseek(f.fileno(), -size-1, 2), 0)
! expect(os.lseek(f.fileno(), size, 0), size)
! expect(f.read(1), 'a') # the 'a' that was written at the end of the file above
! f.close()
  
  if hasattr(f, 'truncate'):
--- 88,137 ----
      print 'play around with seek() and read() with the built largefile'
  f = open(name, 'rb')
! try:
!     expect(f.tell(), 0)
!     expect(f.read(1), 'z')
!     expect(f.tell(), 1)
!     f.seek(0)
!     expect(f.tell(), 0)
!     f.seek(0, 0)
!     expect(f.tell(), 0)
!     f.seek(42)
!     expect(f.tell(), 42)
!     f.seek(42, 0)
!     expect(f.tell(), 42)
!     f.seek(42, 1)
!     expect(f.tell(), 84)
!     f.seek(0, 1)
!     expect(f.tell(), 84)
!     f.seek(0, 2) # seek from the end
!     expect(f.tell(), size + 1 + 0)
!     f.seek(-10, 2)
!     expect(f.tell(), size + 1 - 10)
!     f.seek(-size-1, 2)
!     expect(f.tell(), 0)
!     f.seek(size)
!     expect(f.tell(), size)
!     expect(f.read(1), 'a') # the 'a' that was written at the end of file above
!     f.seek(-size-1, 1)
!     expect(f.read(1), 'z')
!     expect(f.tell(), 1)
! finally:
!     f.close()
  
  if test_support.verbose:
      print 'play around with os.lseek() with the built largefile'
  f = open(name, 'rb')
! try:
!     expect(os.lseek(f.fileno(), 0, 0), 0)
!     expect(os.lseek(f.fileno(), 42, 0), 42)
!     expect(os.lseek(f.fileno(), 42, 1), 84)
!     expect(os.lseek(f.fileno(), 0, 1), 84)
!     expect(os.lseek(f.fileno(), 0, 2), size+1+0)
!     expect(os.lseek(f.fileno(), -10, 2), size+1-10)
!     expect(os.lseek(f.fileno(), -size-1, 2), 0)
!     expect(os.lseek(f.fileno(), size, 0), size)
!     expect(f.read(1), 'a') # the 'a' that was written at the end of file above
! finally:
!     f.close()
  
  if hasattr(f, 'truncate'):
***************
*** 133,162 ****
          print 'try truncate'
      f = open(name, 'r+b')
!     f.seek(0, 2)
!     expect(f.tell(), size+1)    # else we've lost track of the true size
!     # Cut it back via seek + truncate with no argument.
!     newsize = size - 10
!     f.seek(newsize)
!     f.truncate()
!     expect(f.tell(), newsize)   # else pointer moved
!     f.seek(0, 2)
!     expect(f.tell(), newsize)   # else wasn't truncated
!     # Ensure that truncate(smaller than true size) shrinks the file.
!     newsize -= 1
!     f.seek(42)
!     f.truncate(newsize)
!     expect(f.tell(), 42)        # else pointer moved
!     f.seek(0, 2)
!     expect(f.tell(), newsize)   # else wasn't truncated
  
!     # XXX truncate(larger than true size) is ill-defined across platforms
  
!     # cut it waaaaay back
!     f.seek(0)
!     f.truncate(1)
!     expect(f.tell(), 0)         # else pointer moved
!     expect(len(f.read()), 1)    # else wasn't truncated
  
!     f.close()
  
  os.unlink(name)
--- 139,170 ----
          print 'try truncate'
      f = open(name, 'r+b')
!     try:
!         f.seek(0, 2)
!         expect(f.tell(), size+1)    # else we've lost track of the true size
!         # Cut it back via seek + truncate with no argument.
!         newsize = size - 10
!         f.seek(newsize)
!         f.truncate()
!         expect(f.tell(), newsize)   # else pointer moved
!         f.seek(0, 2)
!         expect(f.tell(), newsize)   # else wasn't truncated
!         # Ensure that truncate(smaller than true size) shrinks the file.
!         newsize -= 1
!         f.seek(42)
!         f.truncate(newsize)
!         expect(f.tell(), 42)        # else pointer moved
!         f.seek(0, 2)
!         expect(f.tell(), newsize)   # else wasn't truncated
  
!         # XXX truncate(larger than true size) is ill-defined across platforms
  
!         # cut it waaaaay back
!         f.seek(0)
!         f.truncate(1)
!         expect(f.tell(), 0)         # else pointer moved
!         expect(len(f.read()), 1)    # else wasn't truncated
  
!     finally:
!         f.close()
  
  os.unlink(name)





More information about the Python-checkins mailing list