diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-04 20:04:29 +0200 |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-04 20:04:29 +0200 |
commit | 271c99a7df6e09012c328671761b6e22042bb47f (patch) | |
tree | cb503ccf87ef27abe6753a2b25ff6da4993290d6 /Lib/test/test_threading.py | |
parent | 89ae6ab2a2cfece70bf55c2a314376093e6a1a41 (diff) | |
parent | 2ae7e6ffc12c360e73a6c650549eabf58e3b7d76 (diff) | |
download | cpython-271c99a7df6e09012c328671761b6e22042bb47f.tar.gz |
Issue #1856: Avoid crashes and lockups when daemon threads run while the
interpreter is shutting down; instead, these threads are now killed when
they try to take the GIL.
Diffstat (limited to 'Lib/test/test_threading.py')
-rw-r--r-- | Lib/test/test_threading.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 1c946dab12..c6682d6bac 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -428,6 +428,14 @@ class ThreadTests(BaseTestCase): t.daemon = True self.assertTrue('daemon' in repr(t)) + def test_deamon_param(self): + t = threading.Thread() + self.assertFalse(t.daemon) + t = threading.Thread(daemon=False) + self.assertFalse(t.daemon) + t = threading.Thread(daemon=True) + self.assertTrue(t.daemon) + class ThreadJoinOnShutdown(BaseTestCase): @@ -720,6 +728,10 @@ class ThreadingExceptionTests(BaseTestCase): thread.start() self.assertRaises(RuntimeError, setattr, thread, "daemon", True) + def test_releasing_unacquired_lock(self): + lock = threading.Lock() + self.assertRaises(RuntimeError, lock.release) + class LockTests(lock_tests.LockTests): locktype = staticmethod(threading.Lock) @@ -749,6 +761,7 @@ class BoundedSemaphoreTests(lock_tests.BoundedSemaphoreTests): class BarrierTests(lock_tests.BarrierTests): barriertype = staticmethod(threading.Barrier) + def test_main(): test.support.run_unittest(LockTests, PyRLockTests, CRLockTests, EventTests, ConditionAsRLockTests, ConditionTests, @@ -756,7 +769,7 @@ def test_main(): ThreadTests, ThreadJoinOnShutdown, ThreadingExceptionTests, - BarrierTests + BarrierTests, ) if __name__ == "__main__": |