mirror of https://github.com/python/cpython
gh-126417: validate ABC methods on multiprocessing proxy types (#126454)
Checks that appropriate dunder __ methods exist on the dict and list proxy types. Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
82269c7d58
commit
6ee542d491
|
@ -2464,6 +2464,19 @@ class _TestContainers(BaseTestCase):
|
|||
a = self.list()
|
||||
self.assertIsInstance(a, collections.abc.MutableSequence)
|
||||
|
||||
# MutableSequence also has __iter__, but we can iterate over
|
||||
# ListProxy using __getitem__ instead. Adding __iter__ to ListProxy
|
||||
# would change the behavior of a list modified during iteration.
|
||||
mutable_sequence_methods = (
|
||||
'__contains__', '__delitem__', '__getitem__', '__iadd__',
|
||||
'__len__', '__reversed__', '__setitem__', 'append',
|
||||
'clear', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
|
||||
'reverse',
|
||||
)
|
||||
for name in mutable_sequence_methods:
|
||||
with self.subTest(name=name):
|
||||
self.assertTrue(callable(getattr(a, name)))
|
||||
|
||||
def test_list_iter(self):
|
||||
a = self.list(list(range(10)))
|
||||
it = iter(a)
|
||||
|
@ -2508,6 +2521,15 @@ class _TestContainers(BaseTestCase):
|
|||
a = self.dict()
|
||||
self.assertIsInstance(a, collections.abc.MutableMapping)
|
||||
|
||||
mutable_mapping_methods = (
|
||||
'__contains__', '__delitem__', '__eq__', '__getitem__', '__iter__',
|
||||
'__len__', '__ne__', '__setitem__', 'clear', 'get', 'items',
|
||||
'keys', 'pop', 'popitem', 'setdefault', 'update', 'values',
|
||||
)
|
||||
for name in mutable_mapping_methods:
|
||||
with self.subTest(name=name):
|
||||
self.assertTrue(callable(getattr(a, name)))
|
||||
|
||||
def test_dict_iter(self):
|
||||
d = self.dict()
|
||||
indices = list(range(65, 70))
|
||||
|
|
Loading…
Reference in New Issue