summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2007-07-12 08:05:45 (GMT)
committerGeorg Brandl <georg@python.org>2007-07-12 08:05:45 (GMT)
commitf91149e4a194621b08346ce3f110712a174e271c (patch)
treed21757aed1764d8da0871f29b39662ff333f48f8 /Lib
parentc6057c7812ac3dd05a80255b4750f606a0f79f81 (diff)
downloadcpython-f91149e4a194621b08346ce3f110712a174e271c.zip
cpython-f91149e4a194621b08346ce3f110712a174e271c.tar.gz
cpython-f91149e4a194621b08346ce3f110712a174e271c.tar.bz2
Patch #1752270, #1750931: complain if urllib2 add_handler called
without handler.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_urllib2.py6
-rw-r--r--Lib/urllib2.py4
2 files changed, 10 insertions, 0 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index c9dcf5e..90e1771 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -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
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 415c991..b2cec72 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -295,6 +295,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"]: