From e93aad6043f870d04648e7e0af983248ec60c9ef Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Fri, 29 Jul 2016 17:18:47 -0500 Subject: [PATCH] Open our output file in append mode always This avoid overwriting portions of our log output when using Flake8 in verbose mode. Closes #193 --- docs/source/release-notes/3.0.3.rst | 10 ++++++++-- src/flake8/formatting/base.py | 2 +- tests/unit/test_base_formatter.py | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/source/release-notes/3.0.3.rst b/docs/source/release-notes/3.0.3.rst index 17a13b1..92252ac 100644 --- a/docs/source/release-notes/3.0.3.rst +++ b/docs/source/release-notes/3.0.3.rst @@ -16,12 +16,18 @@ not updated for the current version of flake8. This is nicer than raising a `PicklingError` about failing to pickle a module (See also `GitLab#164`_) +- Always open our output file in append mode so we do not overwrite log + messages. (See also `GitLab#193`_) + + .. links +.. _GitLab#164: + https://gitlab.com/pycqa/flake8/issues/164 .. _GitLab#178: https://gitlab.com/pycqa/flake8/issues/178 +.. _GitLab#193: + https://gitlab.com/pycqa/flake8/issues/193 .. _GitLab#195: https://gitlab.com/pycqa/flake8/issues/195 .. _this Python bug report: https://bugs.python.org/issue27649 -.. _GitLab#164: - https://gitlab.com/pycqa/flake8/issues/164 diff --git a/src/flake8/formatting/base.py b/src/flake8/formatting/base.py index 336bf50..97c60e1 100644 --- a/src/flake8/formatting/base.py +++ b/src/flake8/formatting/base.py @@ -50,7 +50,7 @@ class BaseFormatter(object): This defaults to initializing :attr:`output_fd` if :attr:`filename` """ if self.filename: - self.output_fd = open(self.filename, 'w') + self.output_fd = open(self.filename, 'a') def handle(self, error): """Handle an error reported by Flake8. diff --git a/tests/unit/test_base_formatter.py b/tests/unit/test_base_formatter.py index ae5c12a..8a99fa6 100644 --- a/tests/unit/test_base_formatter.py +++ b/tests/unit/test_base_formatter.py @@ -25,7 +25,7 @@ def test_start(filename): if filename is None: assert mock_open.called is False else: - mock_open.assert_called_once_with(filename, 'w') + mock_open.assert_called_once_with(filename, 'a') def test_stop():