pytest-dev / pytest-timeout

MIT License
213 stars 64 forks source link

Suggestion: Using capturemanager.global_and_fixture_disabled #172

Open AbdealiLoKo opened 6 months ago

AbdealiLoKo commented 6 months ago

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?

flub commented 6 months ago

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?