diff options
author | Bruno Oliveira <nicoddemus@gmail.com> | 2020-09-03 07:14:32 -0300 |
---|---|---|
committer | Bruno Oliveira <nicoddemus@gmail.com> | 2020-09-03 07:44:45 -0300 |
commit | 9f672c85c514e08949c36fd8292dc8e248b9461f (patch) | |
tree | 703551a77dc66d6c486916180c4eb0d81be4875c /src | |
parent | 91dbdb60930e1b573de366cbe7be6dac77ba200f (diff) | |
download | pytest-9f672c85c514e08949c36fd8292dc8e248b9461f.tar.gz |
Fix handle of exceptions in ReprEntry with tb=line
Fix #7707
Diffstat (limited to 'src')
-rw-r--r-- | src/_pytest/_code/code.py | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/_pytest/_code/code.py b/src/_pytest/_code/code.py index 96fa9199b..12d39306a 100644 --- a/src/_pytest/_code/code.py +++ b/src/_pytest/_code/code.py @@ -1049,25 +1049,21 @@ class ReprEntry(TerminalRepr): # such as "> assert 0" fail_marker = "{} ".format(FormattedExcinfo.fail_marker) indent_size = len(fail_marker) - indents = [] - source_lines = [] - failure_lines = [] - seeing_failures = False - for line in self.lines: - is_source_line = not line.startswith(fail_marker) - if is_source_line: - assert not seeing_failures, ( - "Unexpected failure lines between source lines:\n" - + "\n".join(self.lines) - ) + indents = [] # type: List[str] + source_lines = [] # type: List[str] + failure_lines = [] # type: List[str] + for index, line in enumerate(self.lines): + is_failure_line = line.startswith(fail_marker) + if is_failure_line: + # from this point on all lines are considered part of the failure + failure_lines.extend(self.lines[index:]) + break + else: if self.style == "value": source_lines.append(line) else: indents.append(line[:indent_size]) source_lines.append(line[indent_size:]) - else: - seeing_failures = True - failure_lines.append(line) tw._write_source(source_lines, indents) |