From 727d7ce6cba21363470aaefb2dc5353017531be3 Mon Sep 17 00:00:00 2001 From: Jani Tiainen Date: Sat, 10 Sep 2016 12:25:42 +0300 Subject: Fixed #27198 -- Made MultiValueDict.getlist() return a new list to prevent mutation. --- tests/utils_tests/test_datastructures.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests/utils_tests') diff --git a/tests/utils_tests/test_datastructures.py b/tests/utils_tests/test_datastructures.py index 0f520ff9e7..ea2b147953 100644 --- a/tests/utils_tests/test_datastructures.py +++ b/tests/utils_tests/test_datastructures.py @@ -101,6 +101,24 @@ class MultiValueDictTests(SimpleTestCase): self.assertEqual({}, MultiValueDict().dict()) + def test_getlist_doesnt_mutate(self): + x = MultiValueDict({'a': ['1', '2'], 'b': ['3']}) + values = x.getlist('a') + values += x.getlist('b') + self.assertEqual(x.getlist('a'), ['1', '2']) + + def test_internal_getlist_does_mutate(self): + x = MultiValueDict({'a': ['1', '2'], 'b': ['3']}) + values = x._getlist('a') + values += x._getlist('b') + self.assertEqual(x._getlist('a'), ['1', '2', '3']) + + def test_getlist_default(self): + x = MultiValueDict({'a': [1]}) + MISSING = object() + values = x.getlist('b', default=MISSING) + self.assertIs(values, MISSING) + class ImmutableListTests(SimpleTestCase): -- cgit v1.3