@@ -281,7 +281,7 @@ def test_logging_stream_ownership(self, testdir):
281
281
def test_logging():
282
282
import logging
283
283
import pytest
284
- stream = capture.TextIO ()
284
+ stream = capture.CaptureIO ()
285
285
logging.basicConfig(stream=stream)
286
286
stream.close() # to free memory/release resources
287
287
""" )
@@ -622,16 +622,16 @@ def bad_snap(self):
622
622
])
623
623
624
624
625
- class TestTextIO (object ):
625
+ class TestCaptureIO (object ):
626
626
def test_text (self ):
627
- f = capture .TextIO ()
627
+ f = capture .CaptureIO ()
628
628
f .write ("hello" )
629
629
s = f .getvalue ()
630
630
assert s == "hello"
631
631
f .close ()
632
632
633
633
def test_unicode_and_str_mixture (self ):
634
- f = capture .TextIO ()
634
+ f = capture .CaptureIO ()
635
635
if sys .version_info >= (3 , 0 ):
636
636
f .write ("\u00f6 " )
637
637
pytest .raises (TypeError , "f.write(bytes('hello', 'UTF-8'))" )
@@ -642,6 +642,18 @@ def test_unicode_and_str_mixture(self):
642
642
f .close ()
643
643
assert isinstance (s , unicode )
644
644
645
+ @pytest .mark .skipif (
646
+ sys .version_info [0 ] == 2 ,
647
+ reason = 'python 3 only behaviour' ,
648
+ )
649
+ def test_write_bytes_to_buffer (self ):
650
+ """In python3, stdout / stderr are text io wrappers (exposing a buffer
651
+ property of the underlying bytestream). See issue #1407
652
+ """
653
+ f = capture .CaptureIO ()
654
+ f .buffer .write (b'foo\r \n ' )
655
+ assert f .getvalue () == 'foo\r \n '
656
+
645
657
646
658
def test_bytes_io ():
647
659
f = py .io .BytesIO ()
@@ -900,8 +912,8 @@ def test_capturing_modify_sysouterr_in_between(self):
900
912
with self .getcapture () as cap :
901
913
sys .stdout .write ("hello" )
902
914
sys .stderr .write ("world" )
903
- sys .stdout = capture .TextIO ()
904
- sys .stderr = capture .TextIO ()
915
+ sys .stdout = capture .CaptureIO ()
916
+ sys .stderr = capture .CaptureIO ()
905
917
print ("not seen" )
906
918
sys .stderr .write ("not seen\n " )
907
919
out , err = cap .readouterr ()
0 commit comments