diff --git a/src/_pytest/_code/code.py b/src/_pytest/_code/code.py index 5bc78f478..aa96ee43f 100644 --- a/src/_pytest/_code/code.py +++ b/src/_pytest/_code/code.py @@ -1165,11 +1165,28 @@ class ReprEntry(TerminalRepr): else: indents.append(line[:indent_size]) source_lines.append(line[indent_size:]) - + # print(source_lines) tw._write_source(source_lines, indents) # failure lines are always completely red and bold + for i in range(len(failure_lines)): + line_list = failure_lines[i].split() + # This will swap the extra comma in the multiline string with the position of the starting bracket + if len(line_list) == 3 and line_list[2] == "," and line_list[1] == "-": + prev_arg = failure_lines[i - 1] + failure_lines[i - 1] = failure_lines[i] + failure_lines[i] = prev_arg + for line in failure_lines: + line_list = line.split() + # multiline case seems to be an issue with just an added ',' + if len(line_list) == 3 and line_list[2] == "," and line_list[1] == "-": + line = line.replace(",", "[]") + # This is to remove the extra whitespace between '-' and '[]' + line_list = list(line) + extra_wp_i = line_list.index("-") + 1 + line_list.pop(extra_wp_i) + line = "".join(line_list) tw.line(line, bold=True, red=True) def toterminal(self, tw: TerminalWriter) -> None: diff --git a/testing/examples/my_test.py b/testing/examples/my_test.py index 4cd697be7..c4763bc70 100644 --- a/testing/examples/my_test.py +++ b/testing/examples/my_test.py @@ -4,3 +4,19 @@ def test_(): " displays the full diff." ] assert m == [] + + +def test2_(): + m = [ + "This is another check" + " This line and the line above should be fine" + " Same with this line" + " But we should not see the '- ,' appear" + " But rather we should see a '- []' appear" + ] + assert m == [] + + +def test3_(): + m = ["This is some dummy test which shows the strange way in which Pycharm"] + assert m == []