From 28393828e21fb47672a060cdb4e704be8bc21505 Mon Sep 17 00:00:00 2001 From: Victor Stinner <victor.stinner@gmail.com> Date: Fri, 9 Mar 2012 22:58:51 +0100 Subject: [PATCH] Issue #14205: Fix test_dict.test_mutating_lookup() --- Lib/test/test_dict.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 15db51d3ea3..387dd323114 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -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 = {} -- 2.30.9