]> granicus.if.org Git - python/commitdiff
bpo-2661: Make mapping tests better usable for custom mapping classes. (GH-11157)
authorWalter Dörwald <walter@livinglogic.de>
Thu, 6 Jun 2019 10:13:08 +0000 (12:13 +0200)
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 6 Jun 2019 10:13:08 +0000 (03:13 -0700)
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

Lib/test/mapping_tests.py

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