Add a bunch more legacy API tests

This commit is contained in:
Ian Cordasco 2016-07-19 11:12:51 -05:00
parent 8b4f12872e
commit 21a6df725b
No known key found for this signature in database
GPG key ID: 656D3395E4A9791A
2 changed files with 98 additions and 2 deletions

View file

@ -115,8 +115,9 @@ class StyleGuide(object):
def init_report(self, reporter=None): def init_report(self, reporter=None):
"""Set up a formatter for this run of Flake8.""" """Set up a formatter for this run of Flake8."""
if (reporter is not None and if reporter is None:
not issubclass(reporter, formatter.BaseFormatter)): return
if not issubclass(reporter, formatter.BaseFormatter):
raise ValueError("Report should be subclass of " raise ValueError("Report should be subclass of "
"flake8.formatter.BaseFormatter.") "flake8.formatter.BaseFormatter.")
self._application.make_formatter(reporter) self._application.make_formatter(reporter)

View file

@ -1,7 +1,9 @@
"""Tests for Flake8's legacy API.""" """Tests for Flake8's legacy API."""
import mock import mock
import pytest
from flake8.api import legacy as api from flake8.api import legacy as api
from flake8.formatting import base as formatter
def test_get_style_guide(): def test_get_style_guide():
@ -48,3 +50,96 @@ def test_styleguide_check_files():
app.run_checks.assert_called_once_with(paths) app.run_checks.assert_called_once_with(paths)
app.report_errors.assert_called_once_with() app.report_errors.assert_called_once_with()
assert isinstance(report, api.Report) assert isinstance(report, api.Report)
def test_styleguide_excluded():
"""Verify we delegate to our file checker manager.
We also want to ensure that if we don't specify a parent, is_path_excluded
is called exactly once.
"""
app = mock.Mock()
file_checker_manager = app.file_checker_manager = mock.Mock()
style_guide = api.StyleGuide(app)
style_guide.excluded('file.py')
file_checker_manager.is_path_excluded.assert_called_once_with('file.py')
def test_styleguide_excluded_with_parent():
"""Verify we delegate to our file checker manager.
When we add the parent argument, we don't check that is_path_excluded was
called only once.
"""
app = mock.Mock()
file_checker_manager = app.file_checker_manager = mock.Mock()
style_guide = api.StyleGuide(app)
style_guide.excluded('file.py', 'parent')
file_checker_manager.is_path_excluded.call_args == [
('file.py',),
('parent/file.py',),
]
def test_styleguide_init_report_does_nothing():
"""Verify if we use None that we don't call anything."""
app = mock.Mock()
style_guide = api.StyleGuide(app)
style_guide.init_report()
assert app.make_formatter.called is False
assert app.make_guide.called is False
def test_styleguide_init_report_with_non_subclass():
"""Verify we raise a ValueError with non BaseFormatter subclasses."""
app = mock.Mock()
style_guide = api.StyleGuide(app)
with pytest.raises(ValueError):
style_guide.init_report(object)
assert app.make_formatter.called is False
assert app.make_guide.called is False
def test_styleguide_init_report():
"""Verify we do the right incantation for the Application."""
app = mock.Mock(guide='fake')
style_guide = api.StyleGuide(app)
class FakeFormatter(formatter.BaseFormatter):
def format(self, *args):
pass
style_guide.init_report(FakeFormatter)
app.make_formatter.assert_called_once_with(FakeFormatter)
assert app.guide is None
app.make_guide.assert_called_once_with()
def test_styleguide_input_file():
"""Verify we call StyleGuide.check_files with the filename."""
app = mock.Mock()
style_guide = api.StyleGuide(app)
with mock.patch.object(style_guide, 'check_files') as check_files:
style_guide.input_file('file.py')
check_files.assert_called_once_with(['file.py'])
def test_report_total_errors():
"""Verify total errors is just a proxy attribute."""
app = mock.Mock(result_count='Fake count')
report = api.Report(app)
assert report.total_errors == 'Fake count'
def test_report_get_statistics():
"""Verify that we use the statistics object."""
stats = mock.Mock()
stats.statistics_for.return_value = []
style_guide = mock.Mock(stats=stats)
app = mock.Mock(guide=style_guide)
report = api.Report(app)
assert report.get_statistics('E') == []
stats.statistics_for.assert_called_once_with('E')