diff options
| author | Gregory P. Smith <greg@krypto.org> | 2022-12-29 22:41:39 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-29 22:41:39 (GMT) |
| commit | 894f2c3c161933bd820ad322b3b678d89bc2377c (patch) | |
| tree | 9c41c6fe2ce16ab42d7fc35223eeca1c061ea269 /Lib/test/test_thread.py | |
| parent | 2df82db48506e5a2044a28f147fdb42f662d37b9 (diff) | |
| download | cpython-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.py | 13 |
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: |
