From b0ecf3d28f200721968c8013d72c7e3215c2de70 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Wed, 30 Jan 2019 14:39:24 -0800 Subject: [PATCH] Fix flake8 --statistics --- src/flake8/style_guide.py | 12 ++++++++---- tests/integration/test_main.py | 19 ++++++++++++++++++- tests/unit/test_style_guide.py | 16 +++++++++++----- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index df6409c..21a1185 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -337,7 +337,7 @@ class StyleGuideManager(object): self.decider = decider or DecisionEngine(options) self.style_guides = [] self.default_style_guide = StyleGuide( - options, formatter, decider=decider + options, formatter, self.stats, decider=decider ) self.style_guides = list( itertools.chain( @@ -436,14 +436,16 @@ class StyleGuideManager(object): class StyleGuide(object): """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. .. todo:: Add parameter documentation. """ self.options = options self.formatter = formatter - self.stats = statistics.Statistics() + self.stats = stats self.decider = decider or DecisionEngine(options) self.filename = filename if self.filename: @@ -459,7 +461,9 @@ class StyleGuide(object): filename = filename or self.filename options = copy.deepcopy(self.options) 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 def processing_file(self, filename): diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index d67cf86..56f9414 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -6,7 +6,7 @@ from flake8.main import application def test_diff_option(tmpdir, capsys): - """Ensure that FileChecker can handle --diff.""" + """Ensure that `flake8 --diff` works.""" t_py_contents = '''\ import os import sys # unused but not part of diff @@ -41,3 +41,20 @@ index d64ac39..7d943de 100644 out, err = capsys.readouterr() assert out == "t.py:8:1: F821 undefined name 'y'\n" 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 == '' diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index a1740a7..46ab28e 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -4,6 +4,7 @@ import optparse import mock import pytest +from flake8 import statistics from flake8 import style_guide from flake8 import utils from flake8.formatting import base @@ -24,8 +25,11 @@ def create_options(**kwargs): def test_handle_error_does_not_raise_type_errors(): """Verify that we handle our inputs better.""" formatter = mock.create_autospec(base.BaseFormatter, instance=True) - guide = style_guide.StyleGuide(create_options(select=['T111'], ignore=[]), - formatter=formatter) + guide = style_guide.StyleGuide( + create_options(select=['T111'], ignore=[]), + formatter=formatter, + stats=statistics.Statistics(), + ) assert 1 == guide.handle_error( 'T111', 'file.py', 1, None, 'error found', 'a = 1' @@ -60,9 +64,11 @@ def test_style_guide_applies_to(style_guide_file, filename, expected): """Verify that we match a file to its style guide.""" formatter = mock.create_autospec(base.BaseFormatter, instance=True) options = create_options() - guide = style_guide.StyleGuide(options, - formatter=formatter, - filename=style_guide_file) + guide = style_guide.StyleGuide( + options, + formatter=formatter, + stats=statistics.Statistics(), + filename=style_guide_file) assert guide.applies_to(filename) is expected