Handle SIGPIPE/BrokenPipeError in pytest's CLI #7185
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Running
pytest | head -1
and similar causes an annoying error to beprinted to stderr:
(or possibly even a propagating exception in older/other Python versions).
The standard UNIX behavior is to handle the SIGPIPE silently. To
recommended method to do this in Python is described here:
https://docs.python.org/3/library/signal.html#note-on-sigpipe
It is not appropriate to apply this recommendation to
pytest.main()
,which is used programmatically for in-process runs. Hence, change
pytest's entrypoint to a new
pytest.console_main()
function, to beused exclusively by pytest's CLI, and add the SIGPIPE code there.
Fixes #4375.