1 from __future__
import annotations
4 from contextlib
import redirect_stderr, redirect_stdout
5 from io
import StringIO
9 from pybind11_tests
import iostream
as m
13 msg =
"I've been redirected to Python, I hope!"
14 m.captured_output(msg)
15 stdout, stderr = capsys.readouterr()
19 m.captured_output_default(msg)
20 stdout, stderr = capsys.readouterr()
25 stdout, stderr = capsys.readouterr()
32 msg =
"I've been redirected to Python, I hope!"
33 msg = msg * (1024 //
len(msg) + 1)
35 m.captured_output_default(msg)
36 stdout, stderr = capsys.readouterr()
43 msg =
"" + msg * (1024 //
len(msg) + 1)
45 m.captured_output_default(msg)
46 stdout, stderr = capsys.readouterr()
53 msg =
"1" + msg * (1024 //
len(msg) + 1)
55 m.captured_output_default(msg)
56 stdout, stderr = capsys.readouterr()
63 msg =
"" + msg * (1024 //
len(msg) + 1)
65 m.captured_output_default(msg)
66 stdout, stderr = capsys.readouterr()
73 msg =
"1" + msg * (1024 //
len(msg) + 1)
75 m.captured_output_default(msg)
76 stdout, stderr = capsys.readouterr()
83 msg =
"12" + msg * (1024 //
len(msg) + 1)
85 m.captured_output_default(msg)
86 stdout, stderr = capsys.readouterr()
93 msg =
"" + msg * (1024 //
len(msg) + 1)
95 m.captured_output_default(msg)
96 stdout, stderr = capsys.readouterr()
103 msg =
"1" + msg * (1024 //
len(msg) + 1)
105 m.captured_output_default(msg)
106 stdout, stderr = capsys.readouterr()
113 msg =
"12" + msg * (1024 //
len(msg) + 1)
115 m.captured_output_default(msg)
116 stdout, stderr = capsys.readouterr()
123 msg =
"123" + msg * (1024 //
len(msg) + 1)
125 m.captured_output_default(msg)
126 stdout, stderr = capsys.readouterr()
132 msg =
"I've been redirected to Python, I hope!"
134 stdout, stderr = capsys.readouterr()
141 m.captured_output(
"a")
142 m.captured_output(
"b")
143 assert capture ==
"ab"
147 msg =
"(not flushed)"
150 with m.ostream_redirect():
151 m.noisy_function(msg, flush=
False)
152 stdout, stderr = capfd.readouterr()
155 m.noisy_function(msg2, flush=
True)
156 stdout, stderr = capfd.readouterr()
157 assert stdout == msg + msg2
159 m.noisy_function(msg, flush=
False)
161 stdout, stderr = capfd.readouterr()
166 msg =
"Something that should not show up in log"
168 with redirect_stdout(stream):
170 stdout, stderr = capfd.readouterr()
173 assert not stream.getvalue()
176 with redirect_stdout(stream):
177 m.captured_output(msg)
178 stdout, stderr = capfd.readouterr()
181 assert stream.getvalue() == msg
185 msg =
"Something that should not show up in log"
187 with redirect_stderr(stream):
189 stdout, stderr = capfd.readouterr()
192 assert not stream.getvalue()
195 with redirect_stderr(stream):
197 stdout, stderr = capfd.readouterr()
200 assert stream.getvalue() == msg
205 with redirect_stdout(stream):
206 m.captured_output(
"a")
208 m.captured_output(
"c")
210 stdout, stderr = capfd.readouterr()
211 assert stdout ==
"bd"
212 assert stream.getvalue() ==
"ac"
216 m.captured_dual(
"a",
"b")
217 stdout, stderr = capsys.readouterr()
223 msg =
"Should not be in log!"
225 with redirect_stdout(stream):
227 stdout, stderr = capfd.readouterr()
229 assert not stream.getvalue()
232 with redirect_stdout(stream), m.ostream_redirect():
234 stdout, stderr = capfd.readouterr()
236 assert stream.getvalue() == msg
239 with redirect_stdout(stream):
241 stdout, stderr = capfd.readouterr()
243 assert not stream.getvalue()
251 with redirect_stderr(stream), m.ostream_redirect(stdout=
False):
254 stdout, stderr = capfd.readouterr()
257 assert stream.getvalue() == msg2
266 with redirect_stdout(stream), redirect_stderr(stream2), m.ostream_redirect():
269 stdout, stderr = capfd.readouterr()
272 assert stream.getvalue() == msg
273 assert stream2.getvalue() == msg2
276 @pytest.mark.skipif(sys.platform.startswith(
"emscripten"), reason=
"Requires threads")
278 with m.ostream_redirect(stdout=
True, stderr=
False):
284 threads.append(m.TestThread())