diff --git a/src/flake8/formatting/default.py b/src/flake8/formatting/default.py index f8e3a66..8c91f9f 100644 --- a/src/flake8/formatting/default.py +++ b/src/flake8/formatting/default.py @@ -65,6 +65,10 @@ class FilenameOnly(SimpleFormatter): """Initialize our set of filenames.""" self.filenames_already_printed = set() + def show_source(self, error): + """Do not include the source code.""" + pass + def format(self, error): """Ensure we only print each error once.""" if error.filename not in self.filenames_already_printed: @@ -78,3 +82,7 @@ class Nothing(base.BaseFormatter): def format(self, error): """Do nothing.""" pass + + def show_source(self, error): + """Do not print the source.""" + pass diff --git a/tests/unit/test_filenameonly_formatter.py b/tests/unit/test_filenameonly_formatter.py new file mode 100644 index 0000000..caa0ae3 --- /dev/null +++ b/tests/unit/test_filenameonly_formatter.py @@ -0,0 +1,38 @@ +"""Tests for the FilenameOnly formatter object.""" +import optparse + +from flake8 import style_guide +from flake8.formatting import default + + +def options(**kwargs): + """Create an optparse.Values instance.""" + kwargs.setdefault('output_file', None) + kwargs.setdefault('tee', False) + return optparse.Values(kwargs) + + +def test_caches_filenames_already_printed(): + """Verify we cache filenames when we format them.""" + formatter = default.FilenameOnly(options()) + assert formatter.filenames_already_printed == set() + + formatter.format(style_guide.Error('code', 'file.py', 1, 1, 'text', 'l')) + assert formatter.filenames_already_printed == {'file.py'} + + +def test_only_returns_a_string_once_from_format(): + """Verify format ignores the second error with the same filename.""" + formatter = default.FilenameOnly(options()) + error = style_guide.Error('code', 'file.py', 1, 1, 'text', '1') + + assert formatter.format(error) == 'file.py' + assert formatter.format(error) is None + + +def test_show_source_returns_nothing(): + """Verify show_source returns nothing.""" + formatter = default.FilenameOnly(options()) + error = style_guide.Error('code', 'file.py', 1, 1, 'text', '1') + + assert formatter.show_source(error) is None diff --git a/tests/unit/test_nothing_formatter.py b/tests/unit/test_nothing_formatter.py new file mode 100644 index 0000000..ce8087f --- /dev/null +++ b/tests/unit/test_nothing_formatter.py @@ -0,0 +1,28 @@ +"""Tests for the Nothing formatter obbject.""" +import optparse + +from flake8 import style_guide +from flake8.formatting import default + + +def options(**kwargs): + """Create an optparse.Values instance.""" + kwargs.setdefault('output_file', None) + kwargs.setdefault('tee', False) + return optparse.Values(kwargs) + + +def test_format_returns_nothing(): + """Verify Nothing.format returns None.""" + formatter = default.Nothing(options()) + error = style_guide.Error('code', 'file.py', 1, 1, 'text', '1') + + assert formatter.format(error) is None + + +def test_show_source_returns_nothing(): + """Verify Nothing.show_source returns None.""" + formatter = default.Nothing(options()) + error = style_guide.Error('code', 'file.py', 1, 1, 'text', '1') + + assert formatter.show_source(error) is None