Merged revisions 72777 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72777 | collin.winter | 2009-05-18 14:35:40 -0700 (Mon, 18 May 2009) | 1 line

  Issue 6032: fix refleaks in test_urllib2_localnet.
........
diff --git a/Lib/test/test_urllib2_localnet.py b/Lib/test/test_urllib2_localnet.py
index 90d3c88..8641c4b 100644
--- a/Lib/test/test_urllib2_localnet.py
+++ b/Lib/test/test_urllib2_localnet.py
@@ -195,7 +195,11 @@
     testing.
     """
 
-    digest_auth_handler = DigestAuthHandler()
+    def __init__(self, digest_auth_handler, *args, **kwargs):
+        # This has to be set before calling our parent's __init__(), which will
+        # try to call do_GET().
+        self.digest_auth_handler = digest_auth_handler
+        http.server.BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
 
     def log_message(self, format, *args):
         # Uncomment the next line for debugging.
@@ -225,50 +229,51 @@
     REALM = "TestRealm"
 
     def setUp(self):
-        FakeProxyHandler.digest_auth_handler.set_users({
-            self.USER : self.PASSWD
-            })
-        FakeProxyHandler.digest_auth_handler.set_realm(self.REALM)
+        self.digest_auth_handler = DigestAuthHandler()
+        self.digest_auth_handler.set_users({self.USER: self.PASSWD})
+        self.digest_auth_handler.set_realm(self.REALM)
+        def create_fake_proxy_handler(*args, **kwargs):
+            return FakeProxyHandler(self.digest_auth_handler, *args, **kwargs)
 
-        self.server = LoopbackHttpServerThread(FakeProxyHandler)
+        self.server = LoopbackHttpServerThread(create_fake_proxy_handler)
         self.server.start()
         self.server.ready.wait()
         proxy_url = "http://127.0.0.1:%d" % self.server.port
         handler = urllib.request.ProxyHandler({"http" : proxy_url})
-        self._digest_auth_handler = urllib.request.ProxyDigestAuthHandler()
+        self.proxy_digest_handler = urllib.request.ProxyDigestAuthHandler()
         self.opener = urllib.request.build_opener(
-            handler, self._digest_auth_handler)
+            handler, self.proxy_digest_handler)
 
     def tearDown(self):
         self.server.stop()
 
     def test_proxy_with_bad_password_raises_httperror(self):
-        self._digest_auth_handler.add_password(self.REALM, self.URL,
+        self.proxy_digest_handler.add_password(self.REALM, self.URL,
                                                self.USER, self.PASSWD+"bad")
-        FakeProxyHandler.digest_auth_handler.set_qop("auth")
+        self.digest_auth_handler.set_qop("auth")
         self.assertRaises(urllib.error.HTTPError,
                           self.opener.open,
                           self.URL)
 
     def test_proxy_with_no_password_raises_httperror(self):
-        FakeProxyHandler.digest_auth_handler.set_qop("auth")
+        self.digest_auth_handler.set_qop("auth")
         self.assertRaises(urllib.error.HTTPError,
                           self.opener.open,
                           self.URL)
 
     def test_proxy_qop_auth_works(self):
-        self._digest_auth_handler.add_password(self.REALM, self.URL,
+        self.proxy_digest_handler.add_password(self.REALM, self.URL,
                                                self.USER, self.PASSWD)
-        FakeProxyHandler.digest_auth_handler.set_qop("auth")
+        self.digest_auth_handler.set_qop("auth")
         result = self.opener.open(self.URL)
         while result.read():
             pass
         result.close()
 
     def test_proxy_qop_auth_int_works_or_throws_urlerror(self):
-        self._digest_auth_handler.add_password(self.REALM, self.URL,
+        self.proxy_digest_handler.add_password(self.REALM, self.URL,
                                                self.USER, self.PASSWD)
-        FakeProxyHandler.digest_auth_handler.set_qop("auth-int")
+        self.digest_auth_handler.set_qop("auth-int")
         try:
             result = self.opener.open(self.URL)
         except urllib.error.URLError:
@@ -474,8 +479,7 @@
                           "http://sadflkjsasf.i.nvali.d/")
 
 def test_main():
-    support.run_unittest(ProxyAuthTests)
-    support.run_unittest(TestUrlopen)
+    support.run_unittest(ProxyAuthTests, TestUrlopen)
 
 if __name__ == "__main__":
     test_main()