summaryrefslogtreecommitdiff
path: root/Lib/test/test_threading.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_threading.py')
-rw-r--r--Lib/test/test_threading.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 0a4372ec2d..a7a716ed59 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -855,6 +855,26 @@ class ThreadTests(BaseTestCase):
""")
self.assertEqual(out.rstrip(), b"thread_dict.atexit = 'value'")
+ def test_boolean_target(self):
+ # bpo-41149: A thread that had a boolean value of False would not
+ # run, regardless of whether it was callable. The correct behaviour
+ # is for a thread to do nothing if its target is None, and to call
+ # the target otherwise.
+ class BooleanTarget(object):
+ def __init__(self):
+ self.ran = False
+ def __bool__(self):
+ return False
+ def __call__(self):
+ self.ran = True
+
+ target = BooleanTarget()
+ thread = threading.Thread(target=target)
+ thread.start()
+ thread.join()
+ self.assertTrue(target.ran)
+
+
class ThreadJoinOnShutdown(BaseTestCase):