Opened 3 years ago

Last modified 3 years ago

#32558 new New feature

Fail tests when unhandled thread exceptions occur

Reported by: Adam Johnson Owned by: nobody
Component: Testing framework Version: dev
Severity: Normal Keywords:
Cc: Carlton Gibson, Tom Forbes, Chris Jerdonek Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Pair of #32557 and its discussion.

In Python it's possible for a thread to be started, quit with an exception, and this exception never get seen since the main thread doesn't call join() on the failed thread.

Since Python 3.8 it's possible to detect such a case by installing a hook at threading.excepthook: https://docs.python.org/3.9/library/threading.html#threading.excepthook

pytest recently added such a hook, alongside the unraisable exception hook: https://github.com/pytest-dev/pytest/pull/8055

I think we can do similarly here, since an exception in a non-main thread could indicate a problem with code. This is especially pertinent in the async world where sync code can be run in threads through sync_to_async

Change History (1)

comment:1 by Mariusz Felisiak, 3 years ago

Cc: Carlton Gibson Tom Forbes Chris Jerdonek added
Triage Stage: UnreviewedAccepted

Tentatively accepted. As with #32557, I would like to check this in practice.

Note: See TracTickets for help on using tickets.
Back to Top