summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_thread.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2022-12-29 22:41:39 (GMT)
committerGitHub <noreply@github.com>2022-12-29 22:41:39 (GMT)
commit894f2c3c161933bd820ad322b3b678d89bc2377c (patch)
tree9c41c6fe2ce16ab42d7fc35223eeca1c061ea269 /Lib/test/test_thread.py
parent2df82db48506e5a2044a28f147fdb42f662d37b9 (diff)
downloadcpython-894f2c3c161933bd820ad322b3b678d89bc2377c.zip
cpython-894f2c3c161933bd820ad322b3b678d89bc2377c.tar.gz
cpython-894f2c3c161933bd820ad322b3b678d89bc2377c.tar.bz2
gh-100228: Warn from os.fork() if other threads exist. (#100229)
Not comprehensive, best effort warning. There are cases when threads exist on some platforms that this code cannot detect. macOS when API permissions allow and Linux with a readable /proc procfs present are the currently supported cases where a warning should show up reliably. Starting with a DeprecationWarning for now, it is less disruptive than something like RuntimeWarning and most likely to only be seen in people's CI tests - a good place to start with this messaging.
Diffstat (limited to 'Lib/test/test_thread.py')
-rw-r--r--Lib/test/test_thread.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/Lib/test/test_thread.py b/Lib/test/test_thread.py
index 2ae5e9c..8656fbd 100644
--- a/Lib/test/test_thread.py
+++ b/Lib/test/test_thread.py
@@ -5,6 +5,7 @@ from test import support
from test.support import threading_helper
import _thread as thread
import time
+import warnings
import weakref
from test import lock_tests
@@ -238,11 +239,13 @@ class TestForkInThread(unittest.TestCase):
def fork_thread(read_fd, write_fd):
nonlocal pid
- # fork in a thread
- pid = os.fork()
- if pid:
- # parent process
- return
+ # Ignore the warning about fork with threads.
+ with warnings.catch_warnings(category=DeprecationWarning,
+ action="ignore"):
+ # fork in a thread (DANGER, undefined per POSIX)
+ if (pid := os.fork()):
+ # parent process
+ return
# child process
try: