]> granicus.if.org Git - python/commitdiff
Issue #14205: Fix test_dict.test_mutating_lookup()
authorVictor Stinner <victor.stinner@gmail.com>
Fri, 9 Mar 2012 21:58:51 +0000 (22:58 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 9 Mar 2012 21:58:51 +0000 (22:58 +0100)
Lib/test/test_dict.py

index 15db51d3ea389271439d9778293530e4a0c7738f..387dd3231141ce7ec29cb2dea7df106da7fcb75b 100644 (file)
@@ -392,20 +392,27 @@ class DictTest(unittest.TestCase):
         class NastyKey:
             mutate_dict = None
 
+            def __init__(self, value):
+                self.value = value
+
             def __hash__(self):
                 # hash collision!
                 return 1
 
             def __eq__(self, other):
-                if self.mutate_dict:
-                    self.mutate_dict[self] = 1
-                return self == other
-
-        d = {}
-        d[NastyKey()] = 0
-        NastyKey.mutate_dict = d
-        with self.assertRaises(RuntimeError):
-            d[NastyKey()] = None
+                if NastyKey.mutate_dict:
+                    mydict, key = NastyKey.mutate_dict
+                    NastyKey.mutate_dict = None
+                    del mydict[key]
+                return self.value == other.value
+
+        key1 = NastyKey(1)
+        key2 = NastyKey(2)
+        d = {key1: 1}
+        NastyKey.mutate_dict = (d, key1)
+        with self.assertRaisesRegex(RuntimeError,
+                                    'dictionary changed size during lookup'):
+            d[key2] = 2
 
     def test_repr(self):
         d = {}