Opened 17 years ago
Closed 16 years ago
#5836 closed (fixed)
Test client does not clear exception info after re-raising an exception that was raised by a view
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
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
Change History (4)
comment:1 by , 17 years ago
comment:2 by , 17 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:4 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
I just ran into this problem and wanted to upload exactly the same patch.