#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
-~----------~----~----~----~------~----~------~--~---

Reply via email to