MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_recursion_count

Method test_recursion_count

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected