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
|
Itxaso Aizpurua
|
||||||
Iwan Briquemont
|
Iwan Briquemont
|
||||||
Jaap Broekhuizen
|
Jaap Broekhuizen
|
||||||
|
Jake VanderPlas
|
||||||
Jakob van Santen
|
Jakob van Santen
|
||||||
Jakub Mitoraj
|
Jakub Mitoraj
|
||||||
James Bourbeau
|
James Bourbeau
|
||||||
|
|
|
@ -743,7 +743,7 @@ class FormattedExcinfo:
|
||||||
) -> List[str]:
|
) -> List[str]:
|
||||||
"""Return formatted and marked up source lines."""
|
"""Return formatted and marked up source lines."""
|
||||||
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("???")
|
source = Source("???")
|
||||||
line_index = 0
|
line_index = 0
|
||||||
if line_index < 0:
|
if line_index < 0:
|
||||||
|
|
|
@ -461,6 +461,24 @@ class TestFormattedExcinfo:
|
||||||
assert lines[0] == "| def f(x):"
|
assert lines[0] == "| def f(x):"
|
||||||
assert lines[1] == " pass"
|
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:
|
def test_repr_source_excinfo(self) -> None:
|
||||||
"""Check if indentation is right."""
|
"""Check if indentation is right."""
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue