Skip to content

Commit 4a2440d

Browse files
committed
add testcase for dummy slot
Signed-off-by: Keming <kemingy94@gmail.com>
1 parent cfdeb5c commit 4a2440d

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

Lib/test/test_set.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,33 @@ def __hash__(self):
675675
with self.assertRaises(KeyError):
676676
myset.discard(elem2)
677677

678+
def test_set_add_to_dummy_slot(self):
679+
# gh-141805
680+
tasks = set()
681+
682+
class Dummy:
683+
def __hash__(self):
684+
return 0
685+
686+
class CorruptTrigger:
687+
triggered = False
688+
689+
def __hash__(self):
690+
return 0
691+
692+
def __eq__(self, value):
693+
if not self.triggered:
694+
self.triggered = True
695+
tasks.add(self)
696+
return False
697+
698+
tasks.add(Dummy())
699+
tasks.add(Dummy())
700+
tasks.pop()
701+
self.assertEqual(len(tasks), 1)
702+
tasks.add(CorruptTrigger())
703+
self.assertEqual(len(tasks), 2)
704+
678705

679706
class SetSubclass(set):
680707
pass

0 commit comments

Comments
 (0)