[Python-checkins] cpython (3.2): Fix Issue15701 - HTTPError info method call raises AttributeError. Fix that to
senthil.kumaran
python-checkins at python.org
Sun Dec 23 18:13:59 CET 2012
http://hg.python.org/cpython/rev/919ebf74bfdb
changeset: 80997:919ebf74bfdb
branch: 3.2
parent: 80968:0935394069cc
user: Senthil Kumaran <senthil at uthcode.com>
date: Sun Dec 23 09:04:24 2012 -0800
summary:
Fix Issue15701 - HTTPError info method call raises AttributeError. Fix that to return headers correctly
files:
Lib/test/test_urllib2.py | 34 ++++++++++++++++++++-------
Lib/urllib/error.py | 4 +++
Misc/NEWS | 2 +
3 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -1438,16 +1438,32 @@
req = Request(url)
self.assertEqual(req.get_full_url(), url)
-def test_HTTPError_interface():
- """
- Issue 13211 reveals that HTTPError didn't implement the URLError
- interface even though HTTPError is a subclass of URLError.
+ def test_HTTPError_interface(self):
+ """
+ Issue 13211 reveals that HTTPError didn't implement the 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)
- >>> assert hasattr(err, 'reason')
- >>> err.reason
- 'something bad happened'
- """
+ >>> err = urllib.error.HTTPError(msg='something bad happened', url=None, code=None, hdrs=None, fp=None)
+ >>> assert hasattr(err, 'reason')
+ >>> err.reason
+ '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):
from test import test_urllib2
diff --git a/Lib/urllib/error.py b/Lib/urllib/error.py
--- a/Lib/urllib/error.py
+++ b/Lib/urllib/error.py
@@ -58,6 +58,10 @@
def reason(self):
return self.msg
+ def info(self):
+ return self.hdrs
+
+
# exception raised when downloaded size does not match content-length
class ContentTooShortError(URLError):
def __init__(self, message, content):
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -179,6 +179,8 @@
Library
-------
+- Issue #15701: Fix HTTPError info method call to return the headers information.
+
- Issue #16646: ftplib.FTP.makeport() might lose socket error details.
(patch by Serhiy Storchaka)
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list