aboutsummaryrefslogtreecommitdiff
path: root/tests/test_iostream.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_iostream.py')
-rw-r--r--tests/test_iostream.py192
1 files changed, 121 insertions, 71 deletions
diff --git a/tests/test_iostream.py b/tests/test_iostream.py
index 6d493bed..d283eb15 100644
--- a/tests/test_iostream.py
+++ b/tests/test_iostream.py
@@ -1,43 +1,7 @@
-# -*- coding: utf-8 -*-
+from contextlib import redirect_stderr, redirect_stdout
+from io import StringIO
+
from pybind11_tests import iostream as m
-import sys
-
-from contextlib import contextmanager
-
-try:
- # Python 3
- from io import StringIO
-except ImportError:
- # Python 2
- try:
- from cStringIO import StringIO
- except ImportError:
- from StringIO import StringIO
-
-try:
- # Python 3.4
- from contextlib import redirect_stdout
-except ImportError:
-
- @contextmanager
- def redirect_stdout(target):
- original = sys.stdout
- sys.stdout = target
- yield
- sys.stdout = original
-
-
-try:
- # Python 3.5
- from contextlib import redirect_stderr
-except ImportError:
-
- @contextmanager
- def redirect_stderr(target):
- original = sys.stderr
- sys.stderr = target
- yield
- sys.stderr = original
def test_captured(capsys):
@@ -45,16 +9,16 @@ def test_captured(capsys):
m.captured_output(msg)
stdout, stderr = capsys.readouterr()
assert stdout == msg
- assert stderr == ""
+ assert not stderr
m.captured_output_default(msg)
stdout, stderr = capsys.readouterr()
assert stdout == msg
- assert stderr == ""
+ assert not stderr
m.captured_err(msg)
stdout, stderr = capsys.readouterr()
- assert stdout == ""
+ assert not stdout
assert stderr == msg
@@ -66,7 +30,97 @@ def test_captured_large_string(capsys):
m.captured_output_default(msg)
stdout, stderr = capsys.readouterr()
assert stdout == msg
- assert stderr == ""
+ assert not stderr
+
+
+def test_captured_utf8_2byte_offset0(capsys):
+ msg = "\u07FF"
+ msg = "" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_2byte_offset1(capsys):
+ msg = "\u07FF"
+ msg = "1" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_3byte_offset0(capsys):
+ msg = "\uFFFF"
+ msg = "" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_3byte_offset1(capsys):
+ msg = "\uFFFF"
+ msg = "1" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_3byte_offset2(capsys):
+ msg = "\uFFFF"
+ msg = "12" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_4byte_offset0(capsys):
+ msg = "\U0010FFFF"
+ msg = "" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_4byte_offset1(capsys):
+ msg = "\U0010FFFF"
+ msg = "1" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_4byte_offset2(capsys):
+ msg = "\U0010FFFF"
+ msg = "12" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
+
+
+def test_captured_utf8_4byte_offset3(capsys):
+ msg = "\U0010FFFF"
+ msg = "123" + msg * (1024 // len(msg) + 1)
+
+ m.captured_output_default(msg)
+ stdout, stderr = capsys.readouterr()
+ assert stdout == msg
+ assert not stderr
def test_guard_capture(capsys):
@@ -74,7 +128,7 @@ def test_guard_capture(capsys):
m.guard_output(msg)
stdout, stderr = capsys.readouterr()
assert stdout == msg
- assert stderr == ""
+ assert not stderr
def test_series_captured(capture):
@@ -91,7 +145,7 @@ def test_flush(capfd):
with m.ostream_redirect():
m.noisy_function(msg, flush=False)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
+ assert not stdout
m.noisy_function(msg2, flush=True)
stdout, stderr = capfd.readouterr()
@@ -110,15 +164,15 @@ def test_not_captured(capfd):
m.raw_output(msg)
stdout, stderr = capfd.readouterr()
assert stdout == msg
- assert stderr == ""
- assert stream.getvalue() == ""
+ assert not stderr
+ assert not stream.getvalue()
stream = StringIO()
with redirect_stdout(stream):
m.captured_output(msg)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
- assert stderr == ""
+ assert not stdout
+ assert not stderr
assert stream.getvalue() == msg
@@ -128,16 +182,16 @@ def test_err(capfd):
with redirect_stderr(stream):
m.raw_err(msg)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
+ assert not stdout
assert stderr == msg
- assert stream.getvalue() == ""
+ assert not stream.getvalue()
stream = StringIO()
with redirect_stderr(stream):
m.captured_err(msg)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
- assert stderr == ""
+ assert not stdout
+ assert not stderr
assert stream.getvalue() == msg
@@ -167,14 +221,13 @@ def test_redirect(capfd):
m.raw_output(msg)
stdout, stderr = capfd.readouterr()
assert stdout == msg
- assert stream.getvalue() == ""
+ assert not stream.getvalue()
stream = StringIO()
- with redirect_stdout(stream):
- with m.ostream_redirect():
- m.raw_output(msg)
+ with redirect_stdout(stream), m.ostream_redirect():
+ m.raw_output(msg)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
+ assert not stdout
assert stream.getvalue() == msg
stream = StringIO()
@@ -182,7 +235,7 @@ def test_redirect(capfd):
m.raw_output(msg)
stdout, stderr = capfd.readouterr()
assert stdout == msg
- assert stream.getvalue() == ""
+ assert not stream.getvalue()
def test_redirect_err(capfd):
@@ -190,13 +243,12 @@ def test_redirect_err(capfd):
msg2 = "StdErr"
stream = StringIO()
- with redirect_stderr(stream):
- with m.ostream_redirect(stdout=False):
- m.raw_output(msg)
- m.raw_err(msg2)
+ with redirect_stderr(stream), m.ostream_redirect(stdout=False):
+ m.raw_output(msg)
+ m.raw_err(msg2)
stdout, stderr = capfd.readouterr()
assert stdout == msg
- assert stderr == ""
+ assert not stderr
assert stream.getvalue() == msg2
@@ -206,14 +258,12 @@ def test_redirect_both(capfd):
stream = StringIO()
stream2 = StringIO()
- with redirect_stdout(stream):
- with redirect_stderr(stream2):
- with m.ostream_redirect():
- m.raw_output(msg)
- m.raw_err(msg2)
+ with redirect_stdout(stream), redirect_stderr(stream2), m.ostream_redirect():
+ m.raw_output(msg)
+ m.raw_err(msg2)
stdout, stderr = capfd.readouterr()
- assert stdout == ""
- assert stderr == ""
+ assert not stdout
+ assert not stderr
assert stream.getvalue() == msg
assert stream2.getvalue() == msg2