From 68a273144e5bd24a8f88cbf61070ab020be00498 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Tue, 25 Oct 2016 19:28:52 -0500 Subject: [PATCH] Fix bug with --enable-extensions We went through an iteration where we supported --enable-extensions and then didn't. This adds back our support for --enable-extensions. Closes #239 --- src/flake8/style_guide.py | 5 +++-- tests/unit/test_style_guide.py | 27 +++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index 4d8950c..739edd8 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -65,6 +65,7 @@ class StyleGuide(object): self._selected = tuple(options.select) self._extended_selected = tuple(options.extended_default_select) self._ignored = tuple(options.ignore) + self._enabled_extensions = tuple(options.enable_extensions) self._decision_cache = {} self._parsed_diff = {} @@ -81,10 +82,10 @@ class StyleGuide(object): Ignored.Implicitly if the selected list is not empty but no match was found. """ - if not self._selected: + if not (self._selected or self._enabled_extensions): return Selected.Implicitly - if code.startswith(self._selected): + if code.startswith(self._selected + self._enabled_extensions): return Selected.Explicitly # If it was not explicitly selected, it may have been implicitly diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index 8e714b7..f642820 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -15,6 +15,7 @@ def create_options(**kwargs): kwargs.setdefault('extended_default_select', []) kwargs.setdefault('ignore', []) kwargs.setdefault('disable_noqa', False) + kwargs.setdefault('enable_extensions', []) return optparse.Values(kwargs) @@ -50,18 +51,24 @@ def test_is_user_ignored_implicitly_selects_errors(ignore_list, error_code): assert guide.is_user_ignored(error_code) is style_guide.Selected.Implicitly -@pytest.mark.parametrize('select_list,error_code', [ - (['E111', 'E121'], 'E111'), - (['E111', 'E121'], 'E121'), - (['E11', 'E12'], 'E121'), - (['E2', 'E12'], 'E121'), - (['E2', 'E12'], 'E211'), +@pytest.mark.parametrize('select_list,enable_extensions,error_code', [ + (['E111', 'E121'], [], 'E111'), + (['E111', 'E121'], [], 'E121'), + (['E11', 'E12'], [], 'E121'), + (['E2', 'E12'], [], 'E121'), + (['E2', 'E12'], [], 'E211'), + (['E1'], ['E2'], 'E211'), + ([], ['E2'], 'E211'), ]) -def test_is_user_selected_selects_errors(select_list, error_code): +def test_is_user_selected_selects_errors(select_list, enable_extensions, + error_code): """Verify we detect users explicitly selecting an error.""" - guide = style_guide.StyleGuide(create_options(select=select_list), - listener_trie=None, - formatter=None) + guide = style_guide.StyleGuide( + options=create_options(select=select_list, + enable_extensions=enable_extensions), + listener_trie=None, + formatter=None, + ) assert (guide.is_user_selected(error_code) is style_guide.Selected.Explicitly)