[pypy-svn] r49418 - in pypy/branch/pypy-interp-file/module/_file: . test
arigo at codespeak.net
arigo at codespeak.net
Wed Dec 5 20:42:02 CET 2007
Author: arigo
Date: Wed Dec 5 20:42:02 2007
New Revision: 49418
Modified:
pypy/branch/pypy-interp-file/module/_file/app_file.py
pypy/branch/pypy-interp-file/module/_file/interp_file.py
pypy/branch/pypy-interp-file/module/_file/test/test_file_extra.py
Log:
file.truncate().
Modified: pypy/branch/pypy-interp-file/module/_file/app_file.py
==============================================================================
--- pypy/branch/pypy-interp-file/module/_file/app_file.py (original)
+++ pypy/branch/pypy-interp-file/module/_file/app_file.py Wed Dec 5 20:42:02 2007
@@ -234,7 +234,7 @@
raise StopIteration
return line
- def truncate(self, size=None):
+ #def truncate(self, size=None):
"""truncate([size]) -> None. Truncate the file to at most size bytes.
Size defaults to the current file position, as returned by tell()."""
Modified: pypy/branch/pypy-interp-file/module/_file/interp_file.py
==============================================================================
--- pypy/branch/pypy-interp-file/module/_file/interp_file.py (original)
+++ pypy/branch/pypy-interp-file/module/_file/interp_file.py Wed Dec 5 20:42:02 2007
@@ -167,6 +167,15 @@
def direct_tell(self):
return self.getstream().tell()
+ def direct_truncate(self, w_size=None): # note: a wrapped size!
+ stream = self.getstream()
+ space = self.space
+ if w_size is None or space.is_w(w_size, space.w_None):
+ size = stream.tell()
+ else:
+ size = space.int_w(w_size)
+ stream.truncate(size)
+
def direct_write(self, data):
self.getstream().write(data)
@@ -310,6 +319,11 @@
_decl(locals(), "tell", ['self'],
"tell() -> current file position, an integer (may be a long integer).")
+ _decl(locals(), "truncate", ['self', W_Root],
+ """truncate([size]) -> None. Truncate the file to at most size bytes.
+
+Size defaults to the current file position, as returned by tell().""")
+
_decl(locals(), "write", ['self', str],
"""write(str) -> None. Write string str to file.
Modified: pypy/branch/pypy-interp-file/module/_file/test/test_file_extra.py
==============================================================================
--- pypy/branch/pypy-interp-file/module/_file/test/test_file_extra.py (original)
+++ pypy/branch/pypy-interp-file/module/_file/test/test_file_extra.py Wed Dec 5 20:42:02 2007
@@ -456,3 +456,20 @@
else:
assert f.isatty()
f.close()
+
+ def test_truncate(self):
+ fn = self.temptestfile
+ f = open(fn, 'w+b')
+ f.write('hello world')
+ f.seek(7)
+ f.truncate()
+ f.seek(0)
+ data = f.read()
+ assert data == 'hello w'
+ f.seek(0, 2)
+ assert f.tell() == 7
+ f.seek(0)
+ f.truncate(3)
+ data = f.read(123)
+ assert data == 'hel'
+ f.close()
More information about the Pypy-commit
mailing list