summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-10-14 16:21:24 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-10-14 16:21:24 (GMT)
commit992ec46acc1267729da141f683f2594f00ba9f57 (patch)
treee3a6ac322df5d1d565732dd4381845e535073312 /Lib/test
parentc1e98de7be2f6d1d34df36b37e45f97ed209c847 (diff)
downloadcpython-992ec46acc1267729da141f683f2594f00ba9f57.zip
cpython-992ec46acc1267729da141f683f2594f00ba9f57.tar.gz
cpython-992ec46acc1267729da141f683f2594f00ba9f57.tar.bz2
Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_collections.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 4124f91..3ed3abdf 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -1995,6 +1995,20 @@ class OrderedDictTests:
with self.assertRaises(KeyError):
od.move_to_end('x', 0)
+ def test_move_to_end_issue25406(self):
+ OrderedDict = self.module.OrderedDict
+ od = OrderedDict.fromkeys('abc')
+ od.move_to_end('c', last=False)
+ self.assertEqual(list(od), list('cab'))
+ od.move_to_end('a', last=False)
+ self.assertEqual(list(od), list('acb'))
+
+ od = OrderedDict.fromkeys('abc')
+ od.move_to_end('a')
+ self.assertEqual(list(od), list('bca'))
+ od.move_to_end('c')
+ self.assertEqual(list(od), list('bac'))
+
def test_sizeof(self):
OrderedDict = self.module.OrderedDict
# Wimpy test: Just verify the reported size is larger than a regular dict