42 lines
1.8 KiB
Diff
42 lines
1.8 KiB
Diff
Subject: [PATCH] tests: isolate SDK thread lookup mocks from Python threading
|
|
|
|
Thread.join also calls threading.current_thread on Python 3.14. A global
|
|
single-use side effect can be consumed by join instead of the SDK, or
|
|
raise StopIteration in join after the SDK consumes it. Patch the SDK's
|
|
module binding and delegate unmocked operations to the real module.
|
|
Apply the same isolation to the adjacent invalid-thread fallback tests.
|
|
|
|
--- a/tests/test_utils.py
|
|
+++ b/tests/test_utils.py
|
|
@@ -914,7 +914,8 @@
|
|
results = Queue(maxsize=1)
|
|
|
|
def target():
|
|
- with mock.patch("threading.current_thread", side_effect=["fake thread"]):
|
|
+ with mock.patch("sentry_sdk.utils.threading", wraps=threading) as sdk_threading:
|
|
+ sdk_threading.current_thread.return_value = "fake thread"
|
|
results.put(get_current_thread_meta())
|
|
|
|
thread = threading.Thread(target=target)
|
|
@@ -930,7 +931,9 @@
|
|
|
|
def target():
|
|
# mock that somehow the current thread doesn't exist
|
|
- with mock.patch("threading.current_thread", side_effect=[None]):
|
|
+ # Keep the real threading module intact for concurrent Thread.join calls.
|
|
+ with mock.patch("sentry_sdk.utils.threading", wraps=threading) as sdk_threading:
|
|
+ sdk_threading.current_thread.return_value = None
|
|
results.put(get_current_thread_meta())
|
|
|
|
main_thread = threading.main_thread()
|
|
@@ -945,7 +948,8 @@
|
|
results = Queue(maxsize=1)
|
|
|
|
def target():
|
|
- with mock.patch("threading.current_thread", return_value="fake thread"):
|
|
+ with mock.patch("sentry_sdk.utils.threading", wraps=threading) as sdk_threading:
|
|
+ sdk_threading.current_thread.return_value = "fake thread"
|
|
results.put(get_current_thread_meta())
|
|
|
|
main_thread = threading.main_thread()
|