mirror of https://github.com/python/cpython
Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size parameter, as other file-like objects.
Patch by Ryan Kelly.
This commit is contained in:
parent
e333d00d3a
commit
0e86a5842d
|
@ -578,8 +578,13 @@ class SpooledTemporaryFile:
|
|||
def tell(self):
|
||||
return self._file.tell()
|
||||
|
||||
def truncate(self):
|
||||
self._file.truncate()
|
||||
def truncate(self, size=None):
|
||||
if size is None:
|
||||
self._file.truncate()
|
||||
else:
|
||||
if size > self._max_size:
|
||||
self.rollover()
|
||||
self._file.truncate(size)
|
||||
|
||||
def write(self, s):
|
||||
file = self._file
|
||||
|
|
|
@ -846,6 +846,27 @@ class test_SpooledTemporaryFile(TC):
|
|||
pass
|
||||
self.assertRaises(ValueError, use_closed)
|
||||
|
||||
def test_truncate_with_size_parameter(self):
|
||||
# A SpooledTemporaryFile can be truncated to zero size
|
||||
f = tempfile.SpooledTemporaryFile(max_size=10)
|
||||
f.write(b'abcdefg\n')
|
||||
f.seek(0)
|
||||
f.truncate()
|
||||
self.assertFalse(f._rolled)
|
||||
self.assertEqual(f._file.getvalue(), b'')
|
||||
# A SpooledTemporaryFile can be truncated to a specific size
|
||||
f = tempfile.SpooledTemporaryFile(max_size=10)
|
||||
f.write(b'abcdefg\n')
|
||||
f.truncate(4)
|
||||
self.assertFalse(f._rolled)
|
||||
self.assertEqual(f._file.getvalue(), b'abcd')
|
||||
# A SpooledTemporaryFile rolls over if truncated to large size
|
||||
f = tempfile.SpooledTemporaryFile(max_size=10)
|
||||
f.write(b'abcdefg\n')
|
||||
f.truncate(20)
|
||||
self.assertTrue(f._rolled)
|
||||
if has_stat:
|
||||
self.assertEqual(os.fstat(f.fileno()).st_size, 20)
|
||||
|
||||
test_classes.append(test_SpooledTemporaryFile)
|
||||
|
||||
|
|
|
@ -386,10 +386,12 @@ Core and Builtins
|
|||
- Issue #12380: The rjust, ljust and center methods of bytes and bytearray
|
||||
now accept a bytearray argument.
|
||||
|
||||
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size
|
||||
parameter, as other file-like objects. Patch by Ryan Kelly.
|
||||
|
||||
- Issue #13458: Fix a memory leak in the ssl module when decoding a
|
||||
certificate with a subjectAltName. Patch by Robert Xiao.
|
||||
|
||||
|
|
Loading…
Reference in New Issue