mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-02 19:56:52 +00:00
Further refine our logic handling selection
There was a *very* subtle bug in how we handle blanket select statements with error codes that are in our DEFAULT_IGNORE. In the specific case, users were specifying ``--select E`` and E126 was not being properly reported. This unveiled further logic bugs as we refined this. Closes #318
This commit is contained in:
parent
d890b8b683
commit
2baaf00e83
2 changed files with 13 additions and 5 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue