diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index fb0df3a..38fc29a 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -74,6 +74,10 @@ class StyleGuide(object): reverse=True, )) self._ignored = tuple(sorted(options.ignore, reverse=True)) + self._using_default_ignore = set(self._ignored) == set(defaults.IGNORE) + self._using_default_select = ( + set(self._selected) == set(defaults.SELECT) + ) self._decision_cache = {} self._parsed_diff = {} @@ -135,14 +139,15 @@ class StyleGuide(object): ignore = find_first_match(code, self._ignored) if select and ignore: + if self._using_default_ignore and not self._using_default_select: + return Decision.Selected return find_more_specific(select, ignore) if extra_select and ignore: return find_more_specific(extra_select, ignore) - if select or (extra_select and self._selected == defaults.SELECT): + if select or (extra_select and self._using_default_select): return Decision.Selected - if select is None and extra_select is None and ignore is not None: - return Decision.Ignored - if self._selected != defaults.SELECT and select is None: + if ((select is None and extra_select is None) or + (not self._using_default_ignore and select is None)): return Decision.Ignored return Decision.Selected diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index 7357b25..10550f8 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -125,6 +125,9 @@ def test_is_user_selected_excludes_errors(select_list, error_code): (['E41'], ['E2', 'E12', 'E4'], 'E410', style_guide.Decision.Selected), (['E'], ['F'], 'E410', style_guide.Decision.Selected), (['F'], [], 'E410', style_guide.Decision.Ignored), + (['E'], defaults.IGNORE, 'E126', style_guide.Decision.Selected), + (['W'], defaults.IGNORE, 'E126', style_guide.Decision.Ignored), + (['E'], defaults.IGNORE, 'W391', style_guide.Decision.Ignored), ]) def test_should_report_error(select_list, ignore_list, error_code, expected): """Verify we decide when to report an error.""" @@ -141,7 +144,7 @@ def test_should_report_error(select_list, ignore_list, error_code, expected): (defaults.SELECT, [], ['I1'], [], 'I100', style_guide.Decision.Selected), (defaults.SELECT, [], ['I1'], [], 'I201', - style_guide.Decision.Selected), + style_guide.Decision.Ignored), (defaults.SELECT, ['I2'], ['I1'], [], 'I101', style_guide.Decision.Selected), (defaults.SELECT, ['I2'], ['I1'], [], 'I201',