Skip to content

Commit d4721d5

Browse files
Add context disabling capture manager when writing to terminal (#153)
* Add context disabling capture manager when writing to terminal * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix CI issues --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 913322a commit d4721d5

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/pytest_print/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from ._version import __version__
1111

1212
if TYPE_CHECKING:
13+
from _pytest.capture import CaptureManager
1314
from _pytest.config.argparsing import Parser
1415
from _pytest.fixtures import SubRequest
1516
from _pytest.terminal import TerminalReporter
@@ -47,8 +48,9 @@ def printer_session(request: SubRequest) -> Callable[[str], None]:
4748
def create_printer(request: SubRequest) -> Callable[[str], None]:
4849
if request.config.getoption("pytest_print_on") or request.config.getoption("verbose") > 0:
4950
terminal_reporter = request.config.pluginmanager.getplugin("terminalreporter")
51+
capture_manager = request.config.pluginmanager.getplugin("capturemanager")
5052
if terminal_reporter is not None: # pragma: no branch
51-
state = State(request.config.getoption("pytest_print_relative_time"), terminal_reporter)
53+
state = State(request.config.getoption("pytest_print_relative_time"), terminal_reporter, capture_manager)
5254
return state.printer
5355

5456
return no_op
@@ -59,8 +61,9 @@ def no_op(msg: str) -> None:
5961

6062

6163
class State:
62-
def __init__(self, print_relative: bool, reporter: TerminalReporter) -> None: # noqa: FBT001
64+
def __init__(self, print_relative: bool, reporter: TerminalReporter, capture_manager: CaptureManager) -> None: # noqa: FBT001
6365
self._reporter = reporter
66+
self._capture_manager = capture_manager
6467
self._start = default_timer() if print_relative else None
6568
self._print_relative = print_relative
6669

@@ -72,9 +75,10 @@ def elapsed(self) -> float | None:
7275

7376
def printer(self, msg: str) -> None:
7477
msg = "\t{}{}".format(f"{self.elapsed}\t" if self._print_relative else "", msg)
75-
self._reporter.write_line(msg)
78+
with self._capture_manager.global_and_fixture_disabled():
79+
self._reporter.write_line(msg)
7680

77-
__slots__ = ("_print_relative", "_reporter", "_start")
81+
__slots__ = ("_capture_manager", "_print_relative", "_reporter", "_start")
7882

7983

8084
__all__ = [

0 commit comments

Comments
 (0)