Kaydet (Commit) d97bf2e9 authored tarafından Marek Wywiał's avatar Marek Wywiał Kaydeden (comit) Baptiste Mispelon

Fixed #21765 -- Added support for comparing Context instances

üst 985ae732
......@@ -97,6 +97,16 @@ class BaseContext(object):
new_context._reset_dicts(values)
return new_context
def __eq__(self, other):
"""
Compares two contexts by comparing theirs 'dicts' attributes.
"""
if isinstance(other, BaseContext):
return self.dicts[-1] == other.dicts[-1]
# if it's not comparable return false
return False
class Context(BaseContext):
"A stack container for variable context"
......
......@@ -49,3 +49,8 @@ class ContextTests(TestCase):
with self.assertRaises(KeyError):
test_context['fruit']
self.assertIsNone(test_context.get('fruit'))
def test_context_comparable(self):
test_data = {'x': 'y', 'v': 'z', 'd': {'o': object, 'a': 'b'}}
self.assertEquals(Context(test_data), Context(test_data))
......@@ -1928,6 +1928,19 @@ class RequestContextTests(unittest.TestCase):
# [builtins, supplied context, context processor]
self.assertEqual(len(ctx.dicts), 3)
@override_settings(TEMPLATE_CONTEXT_PROCESSORS=())
def test_context_comparable(self):
test_data = {'x': 'y', 'v': 'z', 'd': {'o': object, 'a': 'b'}}
# test comparing RequestContext to prevent problems if somebody
# adds __eq__ in the future
request = RequestFactory().get('/')
self.assertEquals(
RequestContext(request, dict_=test_data),
RequestContext(request, dict_=test_data)
)
class SSITests(TestCase):
def setUp(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment