]> granicus.if.org Git - python/commitdiff
Patch #1752270, #1750931: complain if urllib2 add_handler called
authorGeorg Brandl <georg@python.org>
Thu, 12 Jul 2007 08:05:48 +0000 (08:05 +0000)
committerGeorg Brandl <georg@python.org>
Thu, 12 Jul 2007 08:05:48 +0000 (08:05 +0000)
without handler.
 (backport from rev. 56293)

Lib/test/test_urllib2.py
Lib/urllib2.py

index 5ca760ef4bf609ea2ab04914d547adb105e8b232..9934d3778bf4b73a36ab3a832968f929374acb0f 100644 (file)
@@ -381,6 +381,12 @@ class MockPasswordManager:
 
 class OpenerDirectorTests(unittest.TestCase):
 
+    def test_add_non_handler(self):
+        class NonHandler(object):
+            pass
+        self.assertRaises(TypeError,
+                          OpenerDirector().add_handler, NonHandler())
+
     def test_badly_named_methods(self):
         # test work-around for three methods that accidentally follow the
         # naming conventions for handler methods
index 09d7f9c423e83f77920d95963f88606508b53f1e..3578e7a0b97ba90a9c813697bfd49fa996b1a567 100644 (file)
@@ -298,6 +298,10 @@ class OpenerDirector:
         self.process_request = {}
 
     def add_handler(self, handler):
+        if not hasattr(handler, "add_parent"):
+            raise TypeError("expected BaseHandler instance, got %r" %
+                            type(handler))
+
         added = False
         for meth in dir(handler):
             if meth in ["redirect_request", "do_open", "proxy_open"]: