Merge branch 'fix_statistics' into 'master'

Fix flake8 --statistics

Closes #499

See merge request pycqa/flake8!295
This commit is contained in:
Anthony Sottile 2019-01-30 23:05:48 +00:00
commit cbffa49a0b
3 changed files with 37 additions and 10 deletions

View file

@ -337,7 +337,7 @@ class StyleGuideManager(object):
self.decider = decider or DecisionEngine(options) self.decider = decider or DecisionEngine(options)
self.style_guides = [] self.style_guides = []
self.default_style_guide = StyleGuide( self.default_style_guide = StyleGuide(
options, formatter, decider=decider options, formatter, self.stats, decider=decider
) )
self.style_guides = list( self.style_guides = list(
itertools.chain( itertools.chain(
@ -436,14 +436,16 @@ class StyleGuideManager(object):
class StyleGuide(object): class StyleGuide(object):
"""Manage a Flake8 user's style guide.""" """Manage a Flake8 user's style guide."""
def __init__(self, options, formatter, filename=None, decider=None): def __init__(
self, options, formatter, stats, filename=None, decider=None
):
"""Initialize our StyleGuide. """Initialize our StyleGuide.
.. todo:: Add parameter documentation. .. todo:: Add parameter documentation.
""" """
self.options = options self.options = options
self.formatter = formatter self.formatter = formatter
self.stats = statistics.Statistics() self.stats = stats
self.decider = decider or DecisionEngine(options) self.decider = decider or DecisionEngine(options)
self.filename = filename self.filename = filename
if self.filename: if self.filename:
@ -459,7 +461,9 @@ class StyleGuide(object):
filename = filename or self.filename filename = filename or self.filename
options = copy.deepcopy(self.options) options = copy.deepcopy(self.options)
options.ignore.extend(extend_ignore_with or []) options.ignore.extend(extend_ignore_with or [])
return StyleGuide(options, self.formatter, filename=filename) return StyleGuide(
options, self.formatter, self.stats, filename=filename
)
@contextlib.contextmanager @contextlib.contextmanager
def processing_file(self, filename): def processing_file(self, filename):

View file

@ -6,7 +6,7 @@ from flake8.main import application
def test_diff_option(tmpdir, capsys): def test_diff_option(tmpdir, capsys):
"""Ensure that FileChecker can handle --diff.""" """Ensure that `flake8 --diff` works."""
t_py_contents = '''\ t_py_contents = '''\
import os import os
import sys # unused but not part of diff import sys # unused but not part of diff
@ -41,3 +41,20 @@ index d64ac39..7d943de 100644
out, err = capsys.readouterr() out, err = capsys.readouterr()
assert out == "t.py:8:1: F821 undefined name 'y'\n" assert out == "t.py:8:1: F821 undefined name 'y'\n"
assert err == '' assert err == ''
def test_statistics_option(tmpdir, capsys):
"""Ensure that `flake8 --statistics` works."""
with tmpdir.as_cwd():
tmpdir.join('t.py').write('import os\nimport sys\n')
app = application.Application()
app.run(['--statistics', 't.py'])
out, err = capsys.readouterr()
assert out == '''\
t.py:1:1: F401 'os' imported but unused
t.py:2:1: F401 'sys' imported but unused
2 F401 'os' imported but unused
'''
assert err == ''

View file

@ -4,6 +4,7 @@ import optparse
import mock import mock
import pytest import pytest
from flake8 import statistics
from flake8 import style_guide from flake8 import style_guide
from flake8 import utils from flake8 import utils
from flake8.formatting import base from flake8.formatting import base
@ -24,8 +25,11 @@ def create_options(**kwargs):
def test_handle_error_does_not_raise_type_errors(): def test_handle_error_does_not_raise_type_errors():
"""Verify that we handle our inputs better.""" """Verify that we handle our inputs better."""
formatter = mock.create_autospec(base.BaseFormatter, instance=True) formatter = mock.create_autospec(base.BaseFormatter, instance=True)
guide = style_guide.StyleGuide(create_options(select=['T111'], ignore=[]), guide = style_guide.StyleGuide(
formatter=formatter) create_options(select=['T111'], ignore=[]),
formatter=formatter,
stats=statistics.Statistics(),
)
assert 1 == guide.handle_error( assert 1 == guide.handle_error(
'T111', 'file.py', 1, None, 'error found', 'a = 1' 'T111', 'file.py', 1, None, 'error found', 'a = 1'
@ -60,8 +64,10 @@ def test_style_guide_applies_to(style_guide_file, filename, expected):
"""Verify that we match a file to its style guide.""" """Verify that we match a file to its style guide."""
formatter = mock.create_autospec(base.BaseFormatter, instance=True) formatter = mock.create_autospec(base.BaseFormatter, instance=True)
options = create_options() options = create_options()
guide = style_guide.StyleGuide(options, guide = style_guide.StyleGuide(
options,
formatter=formatter, formatter=formatter,
stats=statistics.Statistics(),
filename=style_guide_file) filename=style_guide_file)
assert guide.applies_to(filename) is expected assert guide.applies_to(filename) is expected