[Python-checkins] CVS: python/dist/src/Lib/test test_largefile.py,1.12,1.12.6.1

Michael Hudson mwh@users.sourceforge.net
2002年3月16日 10:19:35 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv28149/Lib/test
Modified Files:
 Tag: release22-maint
	test_largefile.py 
Log Message:
Backport Tim's work on getting file.truncate working better on Win32.
"cvs diff | patch" managed to stick the NEWS item in the 2.2 final
section! I wonder which silly man wrote patch <wink>.
Index: test_largefile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_largefile.py,v
retrieving revision 1.12
retrieving revision 1.12.6.1
diff -C2 -d -r1.12 -r1.12.6.1
*** test_largefile.py	11 Dec 2001 17:57:26 -0000	1.12
--- test_largefile.py	16 Mar 2002 18:19:33 -0000	1.12.6.1
***************
*** 129,147 ****
 f.close()
 
 
! # XXX add tests for truncate if it exists
! # XXX has truncate ever worked on Windows? specifically on WinNT I get:
! # "IOError: [Errno 13] Permission denied"
! ##try:
! ## newsize = size - 10
! ## f.seek(newsize)
! ## f.truncate()
! ## expect(f.tell(), newsize)
! ## newsize = newsize - 1
! ## f.seek(0)
! ## f.truncate(newsize)
! ## expect(f.tell(), newsize)
! ##except AttributeError:
! ## pass
 
 os.unlink(name)
--- 129,162 ----
 f.close()
 
+ if hasattr(f, 'truncate'):
+ if test_support.verbose:
+ 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)

AltStyle によって変換されたページ (->オリジナル) /