Fail gracefully when line number is out-of-bounds and negative
This commit is contained in:
parent
31d0b51039
commit
f9e3442560
1
AUTHORS
1
AUTHORS
|
@ -163,6 +163,7 @@ Ionuț Turturică
|
|||
Itxaso Aizpurua
|
||||
Iwan Briquemont
|
||||
Jaap Broekhuizen
|
||||
Jake VanderPlas
|
||||
Jakob van Santen
|
||||
Jakub Mitoraj
|
||||
James Bourbeau
|
||||
|
|
|
@ -743,7 +743,7 @@ class FormattedExcinfo:
|
|||
) -> List[str]:
|
||||
"""Return formatted and marked up source lines."""
|
||||
lines = []
|
||||
if source is None or line_index >= len(source.lines):
|
||||
if source is None or line_index >= len(source.lines) or line_index < -len(source.lines):
|
||||
source = Source("???")
|
||||
line_index = 0
|
||||
if line_index < 0:
|
||||
|
|
|
@ -461,6 +461,24 @@ class TestFormattedExcinfo:
|
|||
assert lines[0] == "| def f(x):"
|
||||
assert lines[1] == " pass"
|
||||
|
||||
def test_repr_source_out_of_bounds(self):
|
||||
pr = FormattedExcinfo()
|
||||
source = _pytest._code.Source(
|
||||
"""\
|
||||
def f(x):
|
||||
pass
|
||||
"""
|
||||
).strip()
|
||||
pr.flow_marker = "|" # type: ignore[misc]
|
||||
|
||||
lines = pr.get_source(source, 100)
|
||||
assert len(lines) == 1
|
||||
assert lines[0] == "| ???"
|
||||
|
||||
lines = pr.get_source(source, -100)
|
||||
assert len(lines) == 1
|
||||
assert lines[0] == "| ???"
|
||||
|
||||
def test_repr_source_excinfo(self) -> None:
|
||||
"""Check if indentation is right."""
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue