fixed internal error on unprintable raised AssertionErrors
This commit is contained in:
parent
5721d8aed1
commit
6a52fe1650
|
@ -352,6 +352,8 @@ class ExceptionInfo(object):
|
||||||
help for navigating the traceback.
|
help for navigating the traceback.
|
||||||
"""
|
"""
|
||||||
_striptext = ''
|
_striptext = ''
|
||||||
|
_assert_start_repr = "AssertionError(u\'assert " if sys.version_info[0] < 3 else "AssertionError(\'assert "
|
||||||
|
|
||||||
def __init__(self, tup=None, exprinfo=None):
|
def __init__(self, tup=None, exprinfo=None):
|
||||||
import _pytest._code
|
import _pytest._code
|
||||||
if tup is None:
|
if tup is None:
|
||||||
|
@ -359,8 +361,8 @@ class ExceptionInfo(object):
|
||||||
if exprinfo is None and isinstance(tup[1], AssertionError):
|
if exprinfo is None and isinstance(tup[1], AssertionError):
|
||||||
exprinfo = getattr(tup[1], 'msg', None)
|
exprinfo = getattr(tup[1], 'msg', None)
|
||||||
if exprinfo is None:
|
if exprinfo is None:
|
||||||
exprinfo = py._builtin._totext(tup[1])
|
exprinfo = py.io.saferepr(tup[1])
|
||||||
if exprinfo and exprinfo.startswith('assert '):
|
if exprinfo and exprinfo.startswith(self._assert_start_repr):
|
||||||
self._striptext = 'AssertionError: '
|
self._striptext = 'AssertionError: '
|
||||||
self._excinfo = tup
|
self._excinfo = tup
|
||||||
#: the exception class
|
#: the exception class
|
||||||
|
|
|
@ -916,6 +916,25 @@ def test_assert_with_unicode(monkeypatch, testdir):
|
||||||
result = testdir.runpytest()
|
result = testdir.runpytest()
|
||||||
result.stdout.fnmatch_lines(['*AssertionError*'])
|
result.stdout.fnmatch_lines(['*AssertionError*'])
|
||||||
|
|
||||||
|
def test_raise_unprintable_assertion_error(testdir):
|
||||||
|
testdir.makepyfile(r"""
|
||||||
|
def test_raise_assertion_error():
|
||||||
|
raise AssertionError('\xff')
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest()
|
||||||
|
result.stdout.fnmatch_lines([r"> raise AssertionError('\xff')", 'E AssertionError: *'])
|
||||||
|
|
||||||
|
def test_raise_assertion_error_raisin_repr(testdir):
|
||||||
|
testdir.makepyfile(u"""
|
||||||
|
class RaisingRepr(object):
|
||||||
|
def __repr__(self):
|
||||||
|
raise Exception()
|
||||||
|
def test_raising_repr():
|
||||||
|
raise AssertionError(RaisingRepr())
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest()
|
||||||
|
result.stdout.fnmatch_lines(['E AssertionError: <unprintable AssertionError object>'])
|
||||||
|
|
||||||
def test_issue_1944(testdir):
|
def test_issue_1944(testdir):
|
||||||
testdir.makepyfile("""
|
testdir.makepyfile("""
|
||||||
def f():
|
def f():
|
||||||
|
|
Loading…
Reference in New Issue