Fix AttributeError in ExtensionError

In Python 3, the attribute BaseException.message doesn't exist.

$ python3
>>> from sphinx.errors import ExtensionError
>>> e = ExtensionError('foo')
>>> repr(e)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "sphinx/sphinx/errors.py", line 65, in __repr__
    return '%s(%r)' % (self.__class__.__name__, self.message)
AttributeError: 'ExtensionError' object has no attribute 'message'
This commit is contained in:
Jon Dufresne 2018-09-08 10:20:15 -07:00
parent cf707ac46f
commit 9d6deec4ca
2 changed files with 18 additions and 0 deletions

View File

@ -55,6 +55,7 @@ class ExtensionError(SphinxError):
def __init__(self, message, orig_exc=None):
# type: (unicode, Exception) -> None
SphinxError.__init__(self, message)
self.message = message
self.orig_exc = orig_exc
def __repr__(self):

17
tests/test_errors.py Normal file
View File

@ -0,0 +1,17 @@
import sys
from sphinx.errors import ExtensionError
def test_extension_error_repr():
exc = ExtensionError("foo")
assert repr(exc) == "ExtensionError('foo')"
def test_extension_error_with_orig_exc_repr():
exc = ExtensionError("foo", Exception("bar"))
if sys.version_info < (3, 7):
expected = "ExtensionError('foo', Exception('bar',))"
else:
expected = "ExtensionError('foo', Exception('bar'))"
assert repr(exc) == expected