MCPcopy Index your code
hub / github.com/python/cpython / test_recursion_count

Method test_recursion_count

Lib/test/lock_tests.py:423–456  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

421 self.assertRaises(RuntimeError, lock._release_save)
422
423 def test_recursion_count(self):
424 lock = self.locktype()
425 self.assertEqual(0, lock._recursion_count())
426 lock.acquire()
427 self.assertEqual(1, lock._recursion_count())
428 lock.acquire()
429 lock.acquire()
430 self.assertEqual(3, lock._recursion_count())
431 lock.release()
432 self.assertEqual(2, lock._recursion_count())
433 lock.release()
434 lock.release()
435 self.assertEqual(0, lock._recursion_count())
436
437 phase = []
438
439 def f():
440 lock.acquire()
441 phase.append(None)
442
443 self.wait_phase(phase, 2)
444 lock.release()
445 phase.append(None)
446
447 with threading_helper.wait_threads_exit():
448 # Thread blocked on lock.acquire()
449 start_new_thread(f, ())
450 self.wait_phase(phase, 1)
451 self.assertEqual(0, lock._recursion_count())
452
453 # Thread unblocked
454 phase.append(None)
455 self.wait_phase(phase, 3)
456 self.assertEqual(0, lock._recursion_count())
457
458 def test_different_thread(self):
459 # Cannot release from a different thread

Callers

nothing calls this directly

Calls 6

_recursion_countMethod · 0.80
wait_phaseMethod · 0.80
assertEqualMethod · 0.45
acquireMethod · 0.45
releaseMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected