bpo-2661: Make mapping tests better usable for custom mapping classes. (GH-11157)

In test_fromkeys() the derived test class now supports all arguments in its
constructor so that the class to be tested can use its own constructor in its
fromkeys() implementation.

In test_mutatingiteration() the test fails as soon as iterating over a
dictionary with one entry and adding new entries in the loop iterates more
than once (to avoid endless loops in faulty implementations).



https://bugs.python.org/issue2661
This commit is contained in:
Walter Dörwald 2019-06-06 12:13:08 +02:00 committed by Miss Islington (bot)
parent cb65202520
commit 6af230359e
1 changed files with 5 additions and 3 deletions

View File

@ -448,7 +448,7 @@ class TestMappingProtocol(BasicTestMappingProtocol):
class Exc(Exception): pass class Exc(Exception): pass
class baddict1(self.type2test): class baddict1(self.type2test):
def __init__(self): def __init__(self, *args, **kwargs):
raise Exc() raise Exc()
self.assertRaises(Exc, baddict1.fromkeys, [1]) self.assertRaises(Exc, baddict1.fromkeys, [1])
@ -595,12 +595,14 @@ class TestHashMappingProtocol(TestMappingProtocol):
d = self._empty_mapping() d = self._empty_mapping()
d[1] = 1 d[1] = 1
try: try:
count = 0
for i in d: for i in d:
d[i+1] = 1 d[i+1] = 1
if count >= 1:
self.fail("changing dict size during iteration doesn't raise Error")
count += 1
except RuntimeError: except RuntimeError:
pass pass
else:
self.fail("changing dict size during iteration doesn't raise Error")
def test_repr(self): def test_repr(self):
d = self._empty_mapping() d = self._empty_mapping()