diff options
author | Victor Stinner <vstinner@python.org> | 2020-09-23 21:21:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 21:21:19 (GMT) |
commit | 98c16c991d6e70a48f4280a7cd464d807bdd9f2b (patch) | |
tree | fce606ea267df285b5c1149fea97340389701b8b /Lib/test/test_threading.py | |
parent | 2e4dd336e5b50fd30947fdecb605ddcd71f7f6f5 (diff) | |
download | cpython-98c16c991d6e70a48f4280a7cd464d807bdd9f2b.zip cpython-98c16c991d6e70a48f4280a7cd464d807bdd9f2b.tar.gz cpython-98c16c991d6e70a48f4280a7cd464d807bdd9f2b.tar.bz2 |
bpo-41833: threading.Thread now uses the target name (GH-22357)
Diffstat (limited to 'Lib/test/test_threading.py')
-rw-r--r-- | Lib/test/test_threading.py | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index d02d3b3..2f0f3ae 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -20,6 +20,7 @@ import subprocess import signal import textwrap +from unittest import mock from test import lock_tests from test import support @@ -86,6 +87,33 @@ class BaseTestCase(unittest.TestCase): class ThreadTests(BaseTestCase): + @cpython_only + def test_name(self): + def func(): pass + + thread = threading.Thread(name="myname1") + self.assertEqual(thread.name, "myname1") + + # Convert int name to str + thread = threading.Thread(name=123) + self.assertEqual(thread.name, "123") + + # target name is ignored if name is specified + thread = threading.Thread(target=func, name="myname2") + self.assertEqual(thread.name, "myname2") + + with mock.patch.object(threading, '_counter', return_value=2): + thread = threading.Thread(name="") + self.assertEqual(thread.name, "Thread-2") + + with mock.patch.object(threading, '_counter', return_value=3): + thread = threading.Thread() + self.assertEqual(thread.name, "Thread-3") + + with mock.patch.object(threading, '_counter', return_value=5): + thread = threading.Thread(target=func) + self.assertEqual(thread.name, "Thread-5 (func)") + # Create a bunch of threads, let each do some work, wait until all are # done. def test_various_ops(self): @@ -531,7 +559,7 @@ class ThreadTests(BaseTestCase): import os, threading, sys from test import support - def f(): + def func(): pid = os.fork() if pid == 0: main = threading.main_thread() @@ -544,14 +572,14 @@ class ThreadTests(BaseTestCase): else: support.wait_process(pid, exitcode=0) - th = threading.Thread(target=f) + th = threading.Thread(target=func) th.start() th.join() """ _, out, err = assert_python_ok("-c", code) data = out.decode().replace('\r', '') self.assertEqual(err, b"") - self.assertEqual(data, "Thread-1\nTrue\nTrue\n") + self.assertEqual(data, "Thread-1 (func)\nTrue\nTrue\n") def test_main_thread_during_shutdown(self): # bpo-31516: current_thread() should still point to the main thread |