[Python-checkins] cpython (3.2): Issue #13211: Add .reason attribute to HTTPError to implement parent class

Nick Coghlan ncoghlan at gmail.com
Sun Dec 4 05:11:58 CET 2011


On Sun, Dec 4, 2011 at 12:46 AM, jason.coombs
<python-checkins at python.org> wrote:
> +def test_HTTPError_interface():
> +    """
> +    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'
> +    """
> +

Did you re-run the test suite after forward-porting to 3.3? I'm
consistently getting failures:

$ ./python -m test test_urllib2
[1/1] test_urllib2
**********************************************************************
File "/home/ncoghlan/devel/py3k/Lib/test/test_urllib2.py", line 1457,
in test.test_urllib2.test_HTTPError_interface
Failed example:
    err = urllib.error.HTTPError(msg='something bad happened',
url=None, code=None, hdrs=None, fp=None)
Exception raised:
    Traceback (most recent call last):
      File "/home/ncoghlan/devel/py3k/Lib/doctest.py", line 1253, in __run
        compileflags, 1), test.globs)
      File "<doctest test.test_urllib2.test_HTTPError_interface[0]>",
line 1, in <module>
        err = urllib.error.HTTPError(msg='something bad happened',
url=None, code=None, hdrs=None, fp=None)
    TypeError: HTTPError does not take keyword arguments
**********************************************************************
File "/home/ncoghlan/devel/py3k/Lib/test/test_urllib2.py", line 1458,
in test.test_urllib2.test_HTTPError_interface
Failed example:
    assert hasattr(err, 'reason')
Exception raised:
    Traceback (most recent call last):
      File "/home/ncoghlan/devel/py3k/Lib/doctest.py", line 1253, in __run
        compileflags, 1), test.globs)
      File "<doctest test.test_urllib2.test_HTTPError_interface[1]>",
line 1, in <module>
        assert hasattr(err, 'reason')
    NameError: name 'err' is not defined
**********************************************************************
File "/home/ncoghlan/devel/py3k/Lib/test/test_urllib2.py", line 1459,
in test.test_urllib2.test_HTTPError_interface
Failed example:
    err.reason
Exception raised:
    Traceback (most recent call last):
      File "/home/ncoghlan/devel/py3k/Lib/doctest.py", line 1253, in __run
        compileflags, 1), test.globs)
      File "<doctest test.test_urllib2.test_HTTPError_interface[2]>",
line 1, in <module>
        err.reason
    NameError: name 'err' is not defined
**********************************************************************
1 items had failures:
   3 of   3 in test.test_urllib2.test_HTTPError_interface
***Test Failed*** 3 failures.
test test_urllib2 failed -- 3 of 65 doctests failed
1 test failed:
    test_urllib2
[142313 refs]

Now, this failure is quite possibly due to a flaw in the PEP 3151
implementation (see http://bugs.python.org/issue12555), but picking up
this kind of thing is the reason we say to always run the tests before
committing, even for a simple merge.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-checkins mailing list