mirror of
https://github.com/python/cpython.git
synced 2025-09-24 17:33:29 +00:00
Issue #10355: SpooledTemporaryFile properties and xreadline method now work for unrolled files.
This commit is contained in:
parent
62e709c52b
commit
beaa3adae9
3 changed files with 48 additions and 11 deletions
|
@ -738,6 +738,17 @@ class test_SpooledTemporaryFile(TC):
|
|||
f.write(b'x')
|
||||
self.assertTrue(f._rolled)
|
||||
|
||||
def test_xreadlines(self):
|
||||
f = self.do_create(max_size=20)
|
||||
f.write(b'abc\n' * 5)
|
||||
f.seek(0)
|
||||
self.assertFalse(f._rolled)
|
||||
self.assertEqual(list(f.xreadlines()), [b'abc\n'] * 5)
|
||||
f.write(b'x\ny')
|
||||
self.assertTrue(f._rolled)
|
||||
f.seek(0)
|
||||
self.assertEqual(list(f.xreadlines()), [b'abc\n'] * 5 + [b'x\n', b'y'])
|
||||
|
||||
def test_sparse(self):
|
||||
# A SpooledTemporaryFile that is written late in the file will extend
|
||||
# when that occurs
|
||||
|
@ -793,6 +804,26 @@ class test_SpooledTemporaryFile(TC):
|
|||
seek(0, 0)
|
||||
self.assertTrue(read(70) == 'a'*35 + 'b'*35)
|
||||
|
||||
def test_properties(self):
|
||||
f = tempfile.SpooledTemporaryFile(max_size=10)
|
||||
f.write(b'x' * 10)
|
||||
self.assertFalse(f._rolled)
|
||||
self.assertEqual(f.mode, 'w+b')
|
||||
self.assertIsNone(f.name)
|
||||
with self.assertRaises(AttributeError):
|
||||
f.newlines
|
||||
with self.assertRaises(AttributeError):
|
||||
f.encoding
|
||||
|
||||
f.write(b'x')
|
||||
self.assertTrue(f._rolled)
|
||||
self.assertEqual(f.mode, 'w+b')
|
||||
self.assertIsNotNone(f.name)
|
||||
with self.assertRaises(AttributeError):
|
||||
f.newlines
|
||||
with self.assertRaises(AttributeError):
|
||||
f.encoding
|
||||
|
||||
def test_context_manager_before_rollover(self):
|
||||
# A SpooledTemporaryFile can be used as a context manager
|
||||
with tempfile.SpooledTemporaryFile(max_size=1) as f:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue