Restore sys.std* in utils.fake_io on exceptions.

This commit is contained in:
Florian Bruhin 2015-02-26 17:47:07 +01:00
parent fcbd69e209
commit 8e0dddf86a

View File

@ -388,13 +388,15 @@ def fake_io(write_func):
fake_stdout = FakeIOStream(write_func)
sys.stderr = fake_stderr
sys.stdout = fake_stdout
yield
# If the code we did run did change sys.stdout/sys.stderr, we leave it
# unchanged. Otherwise, we reset it.
if sys.stdout is fake_stdout:
sys.stdout = old_stdout
if sys.stderr is fake_stderr:
sys.stderr = old_stderr
try:
yield
finally:
# If the code we did run did change sys.stdout/sys.stderr, we leave it
# unchanged. Otherwise, we reset it.
if sys.stdout is fake_stdout:
sys.stdout = old_stdout
if sys.stderr is fake_stderr:
sys.stderr = old_stderr
@contextlib.contextmanager