mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Refs #29838 -- Fixed make_hashable() for values that have lists or dicts nested in tuples.
And for non-hashable values that are iterable, e.g. sets.
This commit is contained in:
@@ -8,9 +8,11 @@ class TestHashable(SimpleTestCase):
|
||||
([], ()),
|
||||
(['a', 1], ('a', 1)),
|
||||
({}, ()),
|
||||
({'a'}, {'a'}),
|
||||
({'a'}, ('a',)),
|
||||
(frozenset({'a'}), {'a'}),
|
||||
({'a': 1}, (('a', 1),)),
|
||||
(('a', ['b', 1]), ('a', ('b', 1))),
|
||||
(('a', {'b': 1}), ('a', (('b', 1),))),
|
||||
)
|
||||
for value, expected in tests:
|
||||
with self.subTest(value=value):
|
||||
@@ -19,7 +21,15 @@ class TestHashable(SimpleTestCase):
|
||||
def test_count_equal(self):
|
||||
tests = (
|
||||
({'a': 1, 'b': ['a', 1]}, (('a', 1), ('b', ('a', 1)))),
|
||||
({'a': 1, 'b': ('a', [1, 2])}, (('a', 1), ('b', ('a', (1, 2))))),
|
||||
)
|
||||
for value, expected in tests:
|
||||
with self.subTest(value=value):
|
||||
self.assertCountEqual(make_hashable(value), expected)
|
||||
|
||||
def test_unhashable(self):
|
||||
class Unhashable:
|
||||
__hash__ = None
|
||||
|
||||
with self.assertRaisesMessage(TypeError, "unhashable type: 'Unhashable'"):
|
||||
make_hashable(Unhashable())
|
||||
|
||||
Reference in New Issue
Block a user