#5836: Test client does not clear exception info after re-raising an exception
that was raised by a view
---------------------------------------------+------------------------------
Reporter: Chris Wagner <[EMAIL PROTECTED]> | Owner: nobody
Status: new | Component: Unit test system
Version: SVN | Keywords:
Stage: Unreviewed | Has_patch: 1
---------------------------------------------+------------------------------
Consider this test case:
{{{
def test_user_can_only_remove_his_own_notifications(self):
notification_id = ... # set notification_id based on some
knowledge of what exists in the DB
self.login_as_user(1) # this is a custom method defined in a base
test class
try:
self.client.post("/notifications/remove/%d" % notification_id)
self.fail("User should not be able to remove notifications " +
"that do not belong to him")
except MaliciousOperation:
pass
# make sure the notification still exists...
self.login_as_user(2)
response = self.client.get("/")
self.assertEqual(notification_id,
response.context[0]['notifications'][0].id)
}}}
This causes the exception to be re-raised, by the test client, upon
calling {{{self.client.get()}}}, as the exception info was never cleared
after/during the call to {{{self.client.post()}}}.
This patch seems to fix it:
{{{
--- test/client.py (revision 6626)
+++ test/client.py (working copy)
@@ -181,7 +181,9 @@
# Look for a signalled exception and reraise it
if self.exc_info:
- raise self.exc_info[1], None, self.exc_info[2]
+ exc_info = self.exc_info
+ self.exc_info = None
+ raise exc_info[1], None, exc_info[2]
# Save the client and request that stimulated the response
response.client = self
}}}
--
Ticket URL: <http://code.djangoproject.com/ticket/5836>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---