Opened 18 years ago
Closed 17 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 , 18 years ago
comment:2 by , 18 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:4 by , 17 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.