[wwwsearch-commits] r32773 - in wwwsearch/mechanize/trunk: mechanize test

jjlee at codespeak.net jjlee at codespeak.net
Sat Sep 30 21:28:55 CEST 2006


Author: jjlee
Date: Sat Sep 30 21:28:53 2006
New Revision: 32773

Modified:
   wwwsearch/mechanize/trunk/mechanize/_mechanize.py
   wwwsearch/mechanize/trunk/test/test_browser.py
Log:
Be even more noisy about use after .close()

Modified: wwwsearch/mechanize/trunk/mechanize/_mechanize.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_mechanize.py	(original)
+++ wwwsearch/mechanize/trunk/mechanize/_mechanize.py	Sat Sep 30 21:28:53 2006
@@ -116,13 +116,22 @@
         UserAgent.__init__(self)  # do this last to avoid __getattr__ problems
 
     def close(self):
+        UserAgent.close(self)
         if self._response is not None:
             self._response.close()    
-        UserAgent.close(self)
         if self._history is not None:
             self._history.close()
             self._history = None
+
+        # make use after .close easy to spot
+        self.form = None
         self.request = self._response = None
+        self.request = self.response = self.set_response = None
+        self.geturl =  self.reload = self.back = None
+        self.clear_history = self.set_cookie = self.links = self.forms = None
+        self.viewing_html = self.encoding = self.title = None
+        self.select_form = self.click = self.submit = self.click_link = None
+        self.follow_link = self.find_link = None
 
     def open(self, url, data=None):
         if self._response is not None:

Modified: wwwsearch/mechanize/trunk/test/test_browser.py
==============================================================================
--- wwwsearch/mechanize/trunk/test/test_browser.py	(original)
+++ wwwsearch/mechanize/trunk/test/test_browser.py	Sat Sep 30 21:28:53 2006
@@ -218,8 +218,8 @@
         self.assertRaises(mechanize.BrowserStateError, b.back, 2)
         r8 = b.open("/spam")
 
-        # even if we get a HTTPError, history and .response() should still get
-        # updated
+        # even if we get a HTTPError, history, .response() and .request should
+        # still get updated
         error = urllib2.HTTPError("http://example.com/bad", 503, "Oops",
                                   MockHeaders(), StringIO.StringIO())
         b.add_handler(make_mock_handler()([("https_open", error)]))
@@ -228,8 +228,17 @@
         self.assertEqual(b.request.get_full_url(), "https://example.com/badreq")
         self.assert_(same_response(b.back(), r8))
 
+        # .close() should make use of Browser methods and attributes complain
+        # noisily, since they should not be called after .close()
+        b.form = "blah"
         b.close()
-        # XXX assert BrowserStateError
+        for attr in ("form open error retrieve add_handler "
+                     "request response set_response geturl reload back "
+                     "clear_history set_cookie links forms viewing_html "
+                     "encoding title select_form click submit click_link "
+                     "follow_link find_link".split()
+                     ):
+            self.assert_(getattr(b, attr) is None)
 
     def test_reload_read_incomplete(self):
         import mechanize


More information about the wwwsearch-commits mailing list