From f114fbecc2a486df7fc65f7de1b635520ef1d5ba Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 22 Jan 2010 15:31:14 +0000 Subject: [PATCH] Fixed #12659 -- Return a more meaningful KeyError message when ContextList lookups fail. Thanks to rodriguealcazar for the suggestion. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12274 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/test/utils.py | 2 +- tests/regressiontests/test_client_regress/models.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/django/test/utils.py b/django/test/utils.py index 1129976e4e..b6ab39901b 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -15,7 +15,7 @@ class ContextList(list): for subcontext in self: if key in subcontext: return subcontext[key] - raise KeyError + raise KeyError(key) else: return super(ContextList, self).__getitem__(key) diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py index 42b763ca41..f3585268b3 100644 --- a/tests/regressiontests/test_client_regress/models.py +++ b/tests/regressiontests/test_client_regress/models.py @@ -602,6 +602,12 @@ class ContextTests(TestCase): self.assertEqual(response.context['request-foo'], 'whiz') self.assertEqual(response.context['data'], 'sausage') + try: + response.context['does-not-exist'] + self.fail('Should not be able to retrieve non-existent key') + except KeyError, e: + self.assertEquals(e.message, 'does-not-exist') + def test_inherited_context(self): "Context variables can be retrieved from a list of contexts" response = self.client.get("/test_client_regress/request_data_extended/", data={'foo':'whiz'}) @@ -611,6 +617,13 @@ class ContextTests(TestCase): self.assertEqual(response.context['request-foo'], 'whiz') self.assertEqual(response.context['data'], 'bacon') + try: + response.context['does-not-exist'] + self.fail('Should not be able to retrieve non-existent key') + except KeyError, e: + self.assertEquals(e.message, 'does-not-exist') + + class SessionTests(TestCase): fixtures = ['testdata.json']