Issue #14205: Fix test_dict.test_mutating_lookup()

This commit is contained in:
Victor Stinner 2012-03-09 22:58:51 +01:00
parent 3774977de2
commit 28393828e2
1 changed files with 15 additions and 8 deletions

View 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
if NastyKey.mutate_dict:
mydict, key = NastyKey.mutate_dict
NastyKey.mutate_dict = None
del mydict[key]
return self.value == other.value
d = {}
d[NastyKey()] = 0
NastyKey.mutate_dict = d
with self.assertRaises(RuntimeError):
d[NastyKey()] = None
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 = {}