tests: fix test_repr_traceback_with_invalid_cwd
This never worked as expected (since a912d3745
), and only py38-windows
triggered the mocked `os.getcwd` unintentionally, via `inspect`.
This commit is contained in:
parent
38538c6c6d
commit
79ae86cc3f
|
@ -13,7 +13,7 @@ from _pytest._code.code import ExceptionChainRepr
|
|||
from _pytest._code.code import ExceptionInfo
|
||||
from _pytest._code.code import FormattedExcinfo
|
||||
from _pytest._io import TerminalWriter
|
||||
|
||||
from _pytest.pytester import LineMatcher
|
||||
|
||||
try:
|
||||
import importlib
|
||||
|
@ -776,14 +776,43 @@ raise ValueError()
|
|||
)
|
||||
excinfo = pytest.raises(ValueError, mod.entry)
|
||||
|
||||
p = FormattedExcinfo()
|
||||
p = FormattedExcinfo(abspath=False)
|
||||
|
||||
raised = 0
|
||||
|
||||
orig_getcwd = os.getcwd
|
||||
|
||||
def raiseos():
|
||||
raise OSError(2)
|
||||
nonlocal raised
|
||||
if sys._getframe().f_back.f_code.co_name == "checked_call":
|
||||
# Only raise with expected calls, but not via e.g. inspect for
|
||||
# py38-windows.
|
||||
raised += 1
|
||||
raise OSError(2, "custom_oserror")
|
||||
return orig_getcwd()
|
||||
|
||||
monkeypatch.setattr(os, "getcwd", raiseos)
|
||||
assert p._makepath(__file__) == __file__
|
||||
p.repr_traceback(excinfo)
|
||||
assert raised == 1
|
||||
repr_tb = p.repr_traceback(excinfo)
|
||||
|
||||
matcher = LineMatcher(str(repr_tb).splitlines())
|
||||
matcher.fnmatch_lines(
|
||||
[
|
||||
"def entry():",
|
||||
"> f(0)",
|
||||
"",
|
||||
"{}:5: ".format(mod.__file__),
|
||||
"_ _ *",
|
||||
"",
|
||||
" def f(x):",
|
||||
"> raise ValueError(x)",
|
||||
"E ValueError: 0",
|
||||
"",
|
||||
"{}:3: ValueError".format(mod.__file__),
|
||||
]
|
||||
)
|
||||
assert raised == 3
|
||||
|
||||
def test_repr_excinfo_addouterr(self, importasmod, tw_mock):
|
||||
mod = importasmod(
|
||||
|
@ -1201,8 +1230,6 @@ raise ValueError()
|
|||
real traceback, such as those raised in a subprocess submitted by the multiprocessing
|
||||
module (#1984).
|
||||
"""
|
||||
from _pytest.pytester import LineMatcher
|
||||
|
||||
exc_handling_code = " from e" if reason == "cause" else ""
|
||||
mod = importasmod(
|
||||
"""
|
||||
|
@ -1321,7 +1348,6 @@ def test_exception_repr_extraction_error_on_recursion():
|
|||
Ensure we can properly detect a recursion error even
|
||||
if some locals raise error on comparison (#2459).
|
||||
"""
|
||||
from _pytest.pytester import LineMatcher
|
||||
|
||||
class numpy_like:
|
||||
def __eq__(self, other):
|
||||
|
|
Loading…
Reference in New Issue