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 ExceptionInfo
|
||||||
from _pytest._code.code import FormattedExcinfo
|
from _pytest._code.code import FormattedExcinfo
|
||||||
from _pytest._io import TerminalWriter
|
from _pytest._io import TerminalWriter
|
||||||
|
from _pytest.pytester import LineMatcher
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import importlib
|
import importlib
|
||||||
|
@ -776,14 +776,43 @@ raise ValueError()
|
||||||
)
|
)
|
||||||
excinfo = pytest.raises(ValueError, mod.entry)
|
excinfo = pytest.raises(ValueError, mod.entry)
|
||||||
|
|
||||||
p = FormattedExcinfo()
|
p = FormattedExcinfo(abspath=False)
|
||||||
|
|
||||||
|
raised = 0
|
||||||
|
|
||||||
|
orig_getcwd = os.getcwd
|
||||||
|
|
||||||
def raiseos():
|
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)
|
monkeypatch.setattr(os, "getcwd", raiseos)
|
||||||
assert p._makepath(__file__) == __file__
|
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):
|
def test_repr_excinfo_addouterr(self, importasmod, tw_mock):
|
||||||
mod = importasmod(
|
mod = importasmod(
|
||||||
|
@ -1201,8 +1230,6 @@ raise ValueError()
|
||||||
real traceback, such as those raised in a subprocess submitted by the multiprocessing
|
real traceback, such as those raised in a subprocess submitted by the multiprocessing
|
||||||
module (#1984).
|
module (#1984).
|
||||||
"""
|
"""
|
||||||
from _pytest.pytester import LineMatcher
|
|
||||||
|
|
||||||
exc_handling_code = " from e" if reason == "cause" else ""
|
exc_handling_code = " from e" if reason == "cause" else ""
|
||||||
mod = importasmod(
|
mod = importasmod(
|
||||||
"""
|
"""
|
||||||
|
@ -1321,7 +1348,6 @@ def test_exception_repr_extraction_error_on_recursion():
|
||||||
Ensure we can properly detect a recursion error even
|
Ensure we can properly detect a recursion error even
|
||||||
if some locals raise error on comparison (#2459).
|
if some locals raise error on comparison (#2459).
|
||||||
"""
|
"""
|
||||||
from _pytest.pytester import LineMatcher
|
|
||||||
|
|
||||||
class numpy_like:
|
class numpy_like:
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
|
|
Loading…
Reference in New Issue