mirror of https://github.com/python/cpython.git
Fix Issue15701 - HTTPError info method call raises AttributeError. Fix that to return headers correctly
This commit is contained in:
parent
3cbdaa3fee
commit
41e66a26b0
|
@ -1438,16 +1438,32 @@ def test_url_fragment(self):
|
||||||
req = Request(url)
|
req = Request(url)
|
||||||
self.assertEqual(req.get_full_url(), url)
|
self.assertEqual(req.get_full_url(), url)
|
||||||
|
|
||||||
def test_HTTPError_interface():
|
def test_HTTPError_interface(self):
|
||||||
"""
|
"""
|
||||||
Issue 13211 reveals that HTTPError didn't implement the URLError
|
Issue 13211 reveals that HTTPError didn't implement the URLError
|
||||||
interface even though HTTPError is a subclass of URLError.
|
interface even though HTTPError is a subclass of URLError.
|
||||||
|
|
||||||
>>> err = urllib.error.HTTPError(msg='something bad happened', url=None, code=None, hdrs=None, fp=None)
|
>>> err = urllib.error.HTTPError(msg='something bad happened', url=None, code=None, hdrs=None, fp=None)
|
||||||
>>> assert hasattr(err, 'reason')
|
>>> assert hasattr(err, 'reason')
|
||||||
>>> err.reason
|
>>> err.reason
|
||||||
'something bad happened'
|
'something bad happened'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def test_HTTPError_interface_call(self):
|
||||||
|
"""
|
||||||
|
Issue 15701 - HTTPError interface has info method available from URLError
|
||||||
|
"""
|
||||||
|
err = urllib.request.HTTPError(msg="something bad happened", url=None,
|
||||||
|
code=None, hdrs='Content-Length:42', fp=None)
|
||||||
|
self.assertTrue(hasattr(err, 'reason'))
|
||||||
|
assert hasattr(err, 'reason')
|
||||||
|
assert hasattr(err, 'info')
|
||||||
|
assert callable(err.info)
|
||||||
|
try:
|
||||||
|
err.info()
|
||||||
|
except AttributeError:
|
||||||
|
self.fail('err.info call failed.')
|
||||||
|
self.assertEqual(err.info(), "Content-Length:42")
|
||||||
|
|
||||||
def test_main(verbose=None):
|
def test_main(verbose=None):
|
||||||
from test import test_urllib2
|
from test import test_urllib2
|
||||||
|
|
|
@ -58,6 +58,10 @@ def __str__(self):
|
||||||
def reason(self):
|
def reason(self):
|
||||||
return self.msg
|
return self.msg
|
||||||
|
|
||||||
|
def info(self):
|
||||||
|
return self.hdrs
|
||||||
|
|
||||||
|
|
||||||
# exception raised when downloaded size does not match content-length
|
# exception raised when downloaded size does not match content-length
|
||||||
class ContentTooShortError(URLError):
|
class ContentTooShortError(URLError):
|
||||||
def __init__(self, message, content):
|
def __init__(self, message, content):
|
||||||
|
|
|
@ -179,6 +179,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #15701: Fix HTTPError info method call to return the headers information.
|
||||||
|
|
||||||
- Issue #16646: ftplib.FTP.makeport() might lose socket error details.
|
- Issue #16646: ftplib.FTP.makeport() might lose socket error details.
|
||||||
(patch by Serhiy Storchaka)
|
(patch by Serhiy Storchaka)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue