pytest-timeout icon indicating copy to clipboard operation
pytest-timeout copied to clipboard

Suggestion: Using capturemanager.global_and_fixture_disabled

Open AbdealiLoKo opened this issue 1 year ago • 1 comments

I came across some odd behavior when I was debugging something related to terminal logging in pytest. And noticed pytest-timeout was disabling capturemanager and doing it's own printing Ref: https://github.com/pytest-dev/pytest-timeout/blob/2.3.1/pytest_timeout.py#L511

I think the better approach here may be to use global_and_fixture_disabled which is a context manager to temporarily disable capturemanager and write your own terminal outputs while it is disabled https://github.com/pytest-dev/pytest/blob/main/src/_pytest/capture.py#L819

Any thoughts on whether this would make the logging logic simpler here?

AbdealiLoKo avatar Apr 15 '24 05:04 AbdealiLoKo

Sounds reasonable, it's likely pytest-timemout predates that context manager. I suppose your problem was that the capturing was never re-enabled but the test run continued?

Want to do a PR to switch to it and and make sure test coverage catches the edge cases you found?

flub avatar Apr 15 '24 17:04 flub