13 """Restore sys.stdout/stderr before and after each test for proper isolation.
15 When running with pytest -s (no capture), this fixture ensures that if any
16 test leaves sys.stdout or sys.stderr as TeeStream instances (indicating
17 cleanup failed), those streams are restored before the next test runs.
18 This prevents test isolation failures that are hidden when using pytest -q
19 (which has its own capture mechanism that resets streams).
21 stdout_before = sys.stdout
22 stderr_before = sys.stderr
25 if isinstance(sys.stdout, TeeStream)
or isinstance(sys.stderr, TeeStream):
28 if isinstance(sys.stdout, TeeStream):
30 sys.stdout,
'_get_stream_if_present',
lambda: sys.stdout)()
31 if isinstance(sys.stderr, TeeStream):
33 sys.stderr,
'_get_stream_if_present',
lambda: sys.stderr)()
38 if isinstance(sys.stdout, TeeStream)
or isinstance(sys.stderr, TeeStream):
39 sys.stdout = stdout_before
40 sys.stderr = stderr_before