[3.13] Fix multiprocessing queue test_get() (GH-142024) (#142071)

Fix multiprocessing queue test_get() (GH-142024)

* Replace sleep() with support.sleeping_retry().
* Test get_nowait() first.
* Restore previously disabled test.

Fix the failure:

FAIL: test_get (test.test_multiprocessing_spawn.test_processes.WithProcessesTestQueue.test_get)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Lib/test/_test_multiprocessing.py", line 1208, in test_get
    self.assertEqual(queue_empty(queue), False)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: True != False
(cherry picked from commit 5e749d3743)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2025-11-29 08:22:27 +01:00 committed by GitHub
parent e76192f260
commit c4df097c41
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1109,7 +1109,7 @@ class _TestQueue(BaseTestCase):
@classmethod
def _test_get(cls, queue, child_can_start, parent_can_continue):
child_can_start.wait()
#queue.put(1)
queue.put(1)
queue.put(2)
queue.put(3)
queue.put(4)
@ -1133,15 +1133,16 @@ class _TestQueue(BaseTestCase):
child_can_start.set()
parent_can_continue.wait()
time.sleep(DELTA)
for _ in support.sleeping_retry(support.SHORT_TIMEOUT):
if not queue_empty(queue):
break
self.assertEqual(queue_empty(queue), False)
# Hangs unexpectedly, remove for now
#self.assertEqual(queue.get(), 1)
self.assertEqual(queue.get_nowait(), 1)
self.assertEqual(queue.get(True, None), 2)
self.assertEqual(queue.get(True), 3)
self.assertEqual(queue.get(timeout=1), 4)
self.assertEqual(queue.get_nowait(), 5)
self.assertEqual(queue.get(), 5)
self.assertEqual(queue_empty(queue), True)