From c209c3e694f056c3c087a9ed295dbc9f6638bad9 Mon Sep 17 00:00:00 2001 From: Charlie Denton Date: Wed, 3 Jan 2024 14:06:06 +0000 Subject: [PATCH] Change spacing around report summary Before this change an empty line would be printed above the summary when there were no new errors, and no empty line would be printed when there were errors. This change reverses that. An empty line is printed to separate the summary from the new errors only if there are new errors. --- mypy_json_report.py | 6 ++++-- tests/test_mypy_json_report.py | 20 +++++++------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/mypy_json_report.py b/mypy_json_report.py index 07dd32c..0ccc673 100644 --- a/mypy_json_report.py +++ b/mypy_json_report.py @@ -255,7 +255,8 @@ def __init__(self, _write: Callable[[str], Any] = sys.stdout.write) -> None: def write_report(self, diff: DiffReport) -> None: new_errors = "\n".join(diff.error_lines) - self.write(new_errors + "\n") + if new_errors: + self.write(new_errors + "\n\n") self.write(f"Fixed errors: {diff.num_fixed_errors}\n") self.write(f"New errors: {diff.num_new_errors}\n") self.write(f"Total errors: {diff.total_errors}\n") @@ -282,7 +283,8 @@ def __init__(self, _write: Callable[[str], Any] = sys.stdout.write) -> None: def write_report(self, diff: DiffReport) -> None: new_errors = "\n".join([self._format_line(line) for line in diff.error_lines]) - self.write(new_errors + "\n") + if new_errors: + self.write(new_errors + "\n\n") fixed_color = self._BOLD_RED if diff.num_fixed_errors else self._GREEN error_color = self._BOLD_RED if diff.num_new_errors else self._GREEN diff --git a/tests/test_mypy_json_report.py b/tests/test_mypy_json_report.py index b0c89e1..e9040a5 100644 --- a/tests/test_mypy_json_report.py +++ b/tests/test_mypy_json_report.py @@ -332,12 +332,7 @@ def test_no_errors(self) -> None: ) ) - assert messages == [ - "\n", - "Fixed errors: 0\n", - "New errors: 0\n", - "Total errors: 0\n", - ] + assert messages == ["Fixed errors: 0\n", "New errors: 0\n", "Total errors: 0\n"] def test_with_errors(self) -> None: messages: List[str] = [] @@ -353,7 +348,7 @@ def test_with_errors(self) -> None: ) assert messages == [ - "file.py:8: error: An example type error\n", + "file.py:8: error: An example type error\n\n", "Fixed errors: 0\n", "New errors: 1\n", "Total errors: 2\n", @@ -372,7 +367,6 @@ def test_no_errors(self) -> None: ) assert messages == [ - "\n", "\x1b[32mFixed errors: 0\n\x1b[0m", "\x1b[32mNew errors: 0\n\x1b[0m", "\x1b[1mTotal errors: 0\n\x1b[0m", @@ -392,7 +386,7 @@ def test_with_error(self) -> None: ) assert messages == [ - "file.py:8:\x1b[31;1m error: \x1b[0mAn example type error\n", + "file.py:8:\x1b[31;1m error: \x1b[0mAn example type error\n\n", "\x1b[31;1mFixed errors: 1\n\x1b[0m", "\x1b[31;1mNew errors: 1\n\x1b[0m", "\x1b[1mTotal errors: 2\n\x1b[0m", @@ -414,7 +408,7 @@ def test_with_error_containing_braces(self) -> None: ) assert messages == [ - "file.py:8:\x1b[31;1m error: \x1b[0mContains [braces] but not an error code\n", + "file.py:8:\x1b[31;1m error: \x1b[0mContains [braces] but not an error code\n\n", "\x1b[31;1mFixed errors: 1\n\x1b[0m", "\x1b[31;1mNew errors: 1\n\x1b[0m", "\x1b[1mTotal errors: 2\n\x1b[0m", @@ -436,7 +430,7 @@ def test_unclosed_error_code(self) -> None: ) assert messages == [ - "file.py:8:\x1b[31;1m error: \x1b[0mResembles error code but [is-not-closed\n", + "file.py:8:\x1b[31;1m error: \x1b[0mResembles error code but [is-not-closed\n\n", "\x1b[31;1mFixed errors: 1\n\x1b[0m", "\x1b[31;1mNew errors: 1\n\x1b[0m", "\x1b[1mTotal errors: 2\n\x1b[0m", @@ -456,7 +450,7 @@ def test_with_error_with_code(self) -> None: ) assert messages == [ - "file.py:8:\x1b[31;1m error: \x1b[0mAn example type error\x1b[33m [error-code]\x1b[0m\n", + "file.py:8:\x1b[31;1m error: \x1b[0mAn example type error\x1b[33m [error-code]\x1b[0m\n\n", "\x1b[32mFixed errors: 0\n\x1b[0m", "\x1b[31;1mNew errors: 1\n\x1b[0m", "\x1b[1mTotal errors: 2\n\x1b[0m", @@ -476,7 +470,7 @@ def test_with_note(self) -> None: ) assert messages == [ - "file.py:8:\x1b[34m note: \x1b[0mAn example note\n", + "file.py:8:\x1b[34m note: \x1b[0mAn example note\n\n", "\x1b[31;1mFixed errors: 1\n\x1b[0m", "\x1b[31;1mNew errors: 1\n\x1b[0m", "\x1b[1mTotal errors: 2\n\x1b[0m",