diff options
author | Martin Prusse <prusse@esss.com.br> | 2016-04-08 11:24:12 -0300 |
---|---|---|
committer | Martin Prusse <prusse@esss.com.br> | 2016-04-08 23:32:18 -0300 |
commit | 7ce5873da23ea0dc6f796c4d608731e25191d756 (patch) | |
tree | d2ce87bd026ad46496c28e64388d6b34e89a562c /_pytest/_code/code.py | |
parent | 0eb80bcb5a6fb30e352960b2081a7307d8bc6e39 (diff) | |
download | pytest-7ce5873da23ea0dc6f796c4d608731e25191d756.tar.gz |
Perform a "unicode aware" check for maximum recursion depth error
Avoid errors `UnicodeErrosr`s due non maximum recursion depth errors
when checking for those errors.
Diffstat (limited to '_pytest/_code/code.py')
-rw-r--r-- | _pytest/_code/code.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/_pytest/_code/code.py b/_pytest/_code/code.py index bc68aac55..31a3eda2d 100644 --- a/_pytest/_code/code.py +++ b/_pytest/_code/code.py @@ -579,9 +579,8 @@ class FormattedExcinfo(object): if self.tbfilter: traceback = traceback.filter() recursionindex = None - if excinfo.errisinstance(RuntimeError): - if "maximum recursion depth exceeded" in str(excinfo.value): - recursionindex = traceback.recursionindex() + if is_recursion_error(excinfo): + recursionindex = traceback.recursionindex() last = traceback[-1] entries = [] extraline = None @@ -793,3 +792,14 @@ def getrawcode(obj, trycall=True): return x return obj +if sys.version_info[:2] >= (3, 5): # RecursionError introduced in 3.5 + def is_recursion_error(excinfo): + return excinfo.errisinstance(RecursionError) # noqa +else: + def is_recursion_error(excinfo): + if not excinfo.errisinstance(RuntimeError): + return False + try: + return "maximum recursion depth exceeded" in str(excinfo.value) + except UnicodeError: + return False |