diff options
author | Georg Brandl <georg@python.org> | 2007-07-12 08:05:45 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2007-07-12 08:05:45 (GMT) |
commit | f91149e4a194621b08346ce3f110712a174e271c (patch) | |
tree | d21757aed1764d8da0871f29b39662ff333f48f8 /Lib | |
parent | c6057c7812ac3dd05a80255b4750f606a0f79f81 (diff) | |
download | cpython-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.py | 6 | ||||
-rw-r--r-- | Lib/urllib2.py | 4 |
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"]: |