mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
implement a detach() method for BufferedIOBase and TextIOBase #5883
This commit is contained in:
parent
155374d95d
commit
d2e0c7955f
7 changed files with 214 additions and 15 deletions
|
@ -526,6 +526,12 @@ class PyIOTest(IOTest):
|
|||
class CommonBufferedTests:
|
||||
# Tests common to BufferedReader, BufferedWriter and BufferedRandom
|
||||
|
||||
def test_detach(self):
|
||||
raw = self.MockRawIO()
|
||||
buf = self.tp(raw)
|
||||
self.assertIs(buf.detach(), raw)
|
||||
self.assertRaises(ValueError, buf.detach)
|
||||
|
||||
def test_fileno(self):
|
||||
rawio = self.MockRawIO()
|
||||
bufio = self.tp(rawio)
|
||||
|
@ -811,6 +817,14 @@ class BufferedWriterTest(unittest.TestCase, CommonBufferedTests):
|
|||
bufio.flush()
|
||||
self.assertEquals(b"".join(rawio._write_stack), b"abcghi")
|
||||
|
||||
def test_detach_flush(self):
|
||||
raw = self.MockRawIO()
|
||||
buf = self.tp(raw)
|
||||
buf.write(b"howdy!")
|
||||
self.assertFalse(raw._write_stack)
|
||||
buf.detach()
|
||||
self.assertEqual(raw._write_stack, [b"howdy!"])
|
||||
|
||||
def test_write(self):
|
||||
# Write to the buffered IO but don't overflow the buffer.
|
||||
writer = self.MockRawIO()
|
||||
|
@ -1052,6 +1066,10 @@ class BufferedRWPairTest(unittest.TestCase):
|
|||
pair = self.tp(self.MockRawIO(), self.MockRawIO())
|
||||
self.assertFalse(pair.closed)
|
||||
|
||||
def test_detach(self):
|
||||
pair = self.tp(self.MockRawIO(), self.MockRawIO())
|
||||
self.assertRaises(self.UnsupportedOperation, pair.detach)
|
||||
|
||||
def test_constructor_max_buffer_size_deprecation(self):
|
||||
with support.check_warnings() as w:
|
||||
warnings.simplefilter("always", DeprecationWarning)
|
||||
|
@ -1480,6 +1498,19 @@ class TextIOWrapperTest(unittest.TestCase):
|
|||
self.assertRaises(TypeError, t.__init__, b, newline=42)
|
||||
self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
|
||||
|
||||
def test_detach(self):
|
||||
r = self.BytesIO()
|
||||
b = self.BufferedWriter(r)
|
||||
t = self.TextIOWrapper(b)
|
||||
self.assertIs(t.detach(), b)
|
||||
|
||||
t = self.TextIOWrapper(b, encoding="ascii")
|
||||
t.write("howdy")
|
||||
self.assertFalse(r.getvalue())
|
||||
t.detach()
|
||||
self.assertEqual(r.getvalue(), b"howdy")
|
||||
self.assertRaises(ValueError, t.detach)
|
||||
|
||||
def test_repr(self):
|
||||
raw = self.BytesIO("hello".encode("utf-8"))
|
||||
b = self.BufferedReader(raw)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue