[3.13] gh-121474: Add threading.Barrier parties arg sanity check. (GH-121480) (GH-122444)

(cherry picked from commit d27a53fc02)

Co-authored-by: Clinton <pygeek@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2024-07-30 11:24:35 +02:00 committed by GitHub
parent 466bb0d7ea
commit 202cfbfb7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 0 deletions

View File

@ -1013,6 +1013,10 @@ class BarrierTests(BaseTestCase):
self.assertEqual(self.barrier.n_waiting, 0) self.assertEqual(self.barrier.n_waiting, 0)
self.assertFalse(self.barrier.broken) self.assertFalse(self.barrier.broken)
def test_constructor(self):
self.assertRaises(ValueError, self.barriertype, parties=0)
self.assertRaises(ValueError, self.barriertype, parties=-1)
def test_barrier(self, passes=1): def test_barrier(self, passes=1):
""" """
Test that a barrier is passed in lockstep Test that a barrier is passed in lockstep

View File

@ -689,6 +689,8 @@ class Barrier:
default for all subsequent 'wait()' calls. default for all subsequent 'wait()' calls.
""" """
if parties < 1:
raise ValueError("parties must be > 0")
self._cond = Condition(Lock()) self._cond = Condition(Lock())
self._action = action self._action = action
self._timeout = timeout self._timeout = timeout

View File

@ -0,0 +1,2 @@
Fix missing sanity check for ``parties`` arg in :class:`threading.Barrier`
constructor. Patch by Clinton Christian (pygeek).