check for user-generated exceptions
This commit is contained in:
parent
47c0fc3d78
commit
e938580257
|
@ -132,8 +132,14 @@ def isiterable(obj: Any) -> bool:
|
||||||
try:
|
try:
|
||||||
iter(obj)
|
iter(obj)
|
||||||
return not istext(obj)
|
return not istext(obj)
|
||||||
except TypeError:
|
except Exception as e:
|
||||||
return False
|
if (
|
||||||
|
isinstance(e, TypeError)
|
||||||
|
and (len(e.args) == 1)
|
||||||
|
and "iter() returned non-iterator of type" in str(e.args[0])
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
raise ValueError(f"Unexpected exception {e!r} while testing object {obj!r}")
|
||||||
|
|
||||||
|
|
||||||
def has_default_eq(
|
def has_default_eq(
|
||||||
|
@ -195,13 +201,20 @@ def assertrepr_compare(
|
||||||
explanation = _notin_text(left, right, verbose)
|
explanation = _notin_text(left, right, verbose)
|
||||||
except outcomes.Exit:
|
except outcomes.Exit:
|
||||||
raise
|
raise
|
||||||
except Exception:
|
except Exception as e:
|
||||||
explanation = [
|
if (
|
||||||
"(pytest_assertion plugin: representation of details failed: {}.".format(
|
isinstance(e, ValueError)
|
||||||
_pytest._code.ExceptionInfo.from_current()._getreprcrash()
|
and (len(e.args) == 1)
|
||||||
),
|
and ("Unexpected exception" in str(e.args[0]))
|
||||||
" Probably an object has a faulty __repr__.)",
|
):
|
||||||
]
|
explanation = [e.args[0]]
|
||||||
|
else:
|
||||||
|
explanation = [
|
||||||
|
"(pytest_assertion plugin: representation of details failed: {}.".format(
|
||||||
|
_pytest._code.ExceptionInfo.from_current()._getreprcrash()
|
||||||
|
),
|
||||||
|
" Probably an object has a faulty __repr__.)",
|
||||||
|
]
|
||||||
|
|
||||||
if not explanation:
|
if not explanation:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue