diff options
| author | Antoine Pitrou <pitrou@free.fr> | 2017-06-03 10:32:28 (GMT) | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-03 10:32:28 (GMT) | 
| commit | 3c2817b6884a5fcf792197203f3c26b157210607 (patch) | |
| tree | 36f32bf5581fb14a60257630be600cc1077a260c /Lib/test/test_io.py | |
| parent | ae8750bca8234a9af9382b9d7e457b57f810ad64 (diff) | |
| download | cpython-3c2817b6884a5fcf792197203f3c26b157210607.zip cpython-3c2817b6884a5fcf792197203f3c26b157210607.tar.gz cpython-3c2817b6884a5fcf792197203f3c26b157210607.tar.bz2  | |
Fix bpo-30526: Add TextIOWrapper.reconfigure() and a TextIOWrapper.write_through attribute (#1922)
* Fix bpo-30526: Add TextIOWrapper.reconfigure()
* Apply Nick's improved wording
* Update Misc/NEWS
Diffstat (limited to 'Lib/test/test_io.py')
| -rw-r--r-- | Lib/test/test_io.py | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 69487a1..83d6c4e 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -2440,6 +2440,7 @@ class TextIOWrapperTest(unittest.TestCase):          self.assertEqual(t.encoding, "ascii")          self.assertEqual(t.errors, "strict")          self.assertFalse(t.line_buffering) +        self.assertFalse(t.write_through)      def test_repr(self):          raw = self.BytesIO("hello".encode("utf-8")) @@ -2482,6 +2483,33 @@ class TextIOWrapperTest(unittest.TestCase):          t.write("A\rB")          self.assertEqual(r.getvalue(), b"XY\nZA\rB") +    def test_reconfigure_line_buffering(self): +        r = self.BytesIO() +        b = self.BufferedWriter(r, 1000) +        t = self.TextIOWrapper(b, newline="\n", line_buffering=False) +        t.write("AB\nC") +        self.assertEqual(r.getvalue(), b"") + +        t.reconfigure(line_buffering=True)   # implicit flush +        self.assertEqual(r.getvalue(), b"AB\nC") +        t.write("DEF\nG") +        self.assertEqual(r.getvalue(), b"AB\nCDEF\nG") +        t.write("H") +        self.assertEqual(r.getvalue(), b"AB\nCDEF\nG") +        t.reconfigure(line_buffering=False)   # implicit flush +        self.assertEqual(r.getvalue(), b"AB\nCDEF\nGH") +        t.write("IJ") +        self.assertEqual(r.getvalue(), b"AB\nCDEF\nGH") + +        # Keeping default value +        t.reconfigure() +        t.reconfigure(line_buffering=None) +        self.assertEqual(t.line_buffering, False) +        t.reconfigure(line_buffering=True) +        t.reconfigure() +        t.reconfigure(line_buffering=None) +        self.assertEqual(t.line_buffering, True) +      def test_default_encoding(self):          old_environ = dict(os.environ)          try: @@ -3164,6 +3192,29 @@ class TextIOWrapperTest(unittest.TestCase):          self.assertTrue(write_called)          self.assertEqual(rawio.getvalue(), data * 11) # all flushed +    def test_reconfigure_write_through(self): +        raw = self.MockRawIO([]) +        t = self.TextIOWrapper(raw, encoding='ascii', newline='\n') +        t.write('1') +        t.reconfigure(write_through=True)  # implied flush +        self.assertEqual(t.write_through, True) +        self.assertEqual(b''.join(raw._write_stack), b'1') +        t.write('23') +        self.assertEqual(b''.join(raw._write_stack), b'123') +        t.reconfigure(write_through=False) +        self.assertEqual(t.write_through, False) +        t.write('45') +        t.flush() +        self.assertEqual(b''.join(raw._write_stack), b'12345') +        # Keeping default value +        t.reconfigure() +        t.reconfigure(write_through=None) +        self.assertEqual(t.write_through, False) +        t.reconfigure(write_through=True) +        t.reconfigure() +        t.reconfigure(write_through=None) +        self.assertEqual(t.write_through, True) +      def test_read_nonbytes(self):          # Issue #17106          # Crash when underlying read() returns non-bytes  | 
