mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Issue #25449: Fixed a crash and leaking NULL in repr() of OrderedDict that
was mutated by direct calls of dict methods.
This commit is contained in:
parent
b45b7b2137
commit
710cd34bdb
3 changed files with 70 additions and 2 deletions
|
@ -2145,6 +2145,60 @@ class OrderedDictTests:
|
|||
key = c0 + c1
|
||||
od[key] = key
|
||||
|
||||
# Direct use of dict methods
|
||||
|
||||
def test_dict_setitem(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
dict.__setitem__(od, 'spam', 1)
|
||||
self.assertNotIn('NULL', repr(od))
|
||||
|
||||
def test_dict_delitem(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
od['spam'] = 1
|
||||
od['ham'] = 2
|
||||
dict.__delitem__(od, 'spam')
|
||||
with self.assertRaises(KeyError):
|
||||
repr(od)
|
||||
|
||||
def test_dict_clear(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
od['spam'] = 1
|
||||
od['ham'] = 2
|
||||
dict.clear(od)
|
||||
self.assertNotIn('NULL', repr(od))
|
||||
|
||||
def test_dict_pop(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
od['spam'] = 1
|
||||
od['ham'] = 2
|
||||
dict.pop(od, 'spam')
|
||||
with self.assertRaises(KeyError):
|
||||
repr(od)
|
||||
|
||||
def test_dict_popitem(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
od['spam'] = 1
|
||||
od['ham'] = 2
|
||||
dict.popitem(od)
|
||||
with self.assertRaises(KeyError):
|
||||
repr(od)
|
||||
|
||||
def test_dict_setdefault(self):
|
||||
OrderedDict = self.OrderedDict
|
||||
od = OrderedDict()
|
||||
dict.setdefault(od, 'spam', 1)
|
||||
self.assertNotIn('NULL', repr(od))
|
||||
|
||||
def test_dict_update(self):
|
||||
od = OrderedDict()
|
||||
dict.update(od, [('spam', 1)])
|
||||
self.assertNotIn('NULL', repr(od))
|
||||
|
||||
|
||||
class PurePythonOrderedDictTests(OrderedDictTests, unittest.TestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue