Fix OrderedDict.setdefault() to work for subclasses that define __missing__().
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 02b9dc3..32ce35b 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -976,6 +976,12 @@
# make sure 'x' is added to the end
self.assertEqual(list(od.items())[-1], ('x', 10))
+ # make sure setdefault still works when __missing__ is defined
+ class Missing(OrderedDict):
+ def __missing__(self, key):
+ return 0
+ self.assertEqual(Missing().setdefault(5, 9), 9)
+
def test_reinsert(self):
# Given insert a, insert b, delete a, re-insert a,
# verify that a is now later than b.