diff --git a/src/flake8/options/aggregator.py b/src/flake8/options/aggregator.py index bdcd6a3..31adf9d 100644 --- a/src/flake8/options/aggregator.py +++ b/src/flake8/options/aggregator.py @@ -47,6 +47,10 @@ def aggregate_options( # Extend the default ignore value with the extended default ignore list, # registered by plugins. extended_default_ignore = manager.extended_default_ignore.copy() + # Let's store our extended default ignore for use by the decision engine + default_values.extended_default_ignore = ( + manager.extended_default_ignore.copy() + ) LOG.debug( "Extended default ignore list: %s", list(extended_default_ignore) ) diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index 9be0fe8..91d21ab 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -166,7 +166,9 @@ class DecisionEngine(object): reverse=True, ) ) - self.using_default_ignore = set(self.ignored) == set(defaults.IGNORE) + self.using_default_ignore = set(self.ignored) == set( + defaults.IGNORE + ).union(options.extended_default_ignore) self.using_default_select = set(self.selected) == set(defaults.SELECT) def _in_all_selected(self, code): # type: (str) -> bool diff --git a/tests/unit/test_decision_engine.py b/tests/unit/test_decision_engine.py index 7d92309..ef77324 100644 --- a/tests/unit/test_decision_engine.py +++ b/tests/unit/test_decision_engine.py @@ -10,6 +10,7 @@ from flake8 import style_guide def create_options(**kwargs): """Create and return an instance of argparse.Namespace.""" kwargs.setdefault('select', []) + kwargs.setdefault('extended_default_ignore', []) kwargs.setdefault('extended_default_select', []) kwargs.setdefault('ignore', []) kwargs.setdefault('extend_ignore', []) @@ -144,54 +145,92 @@ def test_decision_for(select_list, ignore_list, extend_ignore, error_code, @pytest.mark.parametrize( - 'select,ignore,extend_select,enabled_extensions,error_code,expected', [ - (defaults.SELECT, [], ['I1'], [], 'I100', + 'select,ignore,extended_default_ignore,extend_select,enabled_extensions,' + 'error_code,expected', [ + (defaults.SELECT, [], [], ['I1'], [], 'I100', style_guide.Decision.Selected), - (defaults.SELECT, [], ['I1'], [], 'I201', + (defaults.SELECT, [], [], ['I1'], [], 'I201', style_guide.Decision.Ignored), - (defaults.SELECT, ['I2'], ['I1'], [], 'I101', + (defaults.SELECT, ['I2'], [], ['I1'], [], 'I101', style_guide.Decision.Selected), - (defaults.SELECT, ['I2'], ['I1'], [], 'I201', + (defaults.SELECT, ['I2'], [], ['I1'], [], 'I201', style_guide.Decision.Ignored), - (defaults.SELECT, ['I1'], ['I10'], [], 'I101', + (defaults.SELECT, ['I1'], [], ['I10'], [], 'I101', style_guide.Decision.Selected), - (defaults.SELECT, ['I10'], ['I1'], [], 'I101', + (defaults.SELECT, ['I10'], [], ['I1'], [], 'I101', style_guide.Decision.Ignored), - (defaults.SELECT, [], [], ['U4'], 'U401', + (defaults.SELECT, [], [], [], ['U4'], 'U401', style_guide.Decision.Selected), - (defaults.SELECT, ['U401'], [], ['U4'], 'U401', + (defaults.SELECT, ['U401'], [], [], ['U4'], 'U401', style_guide.Decision.Ignored), - (defaults.SELECT, ['U401'], [], ['U4'], 'U402', + (defaults.SELECT, ['U401'], [], [], ['U4'], 'U402', style_guide.Decision.Selected), - (['E', 'W'], ['E13'], [], [], 'E131', style_guide.Decision.Ignored), - (['E', 'W'], ['E13'], [], [], 'E126', style_guide.Decision.Selected), - (['E2'], ['E21'], [], [], 'E221', style_guide.Decision.Selected), - (['E2'], ['E21'], [], [], 'E212', style_guide.Decision.Ignored), - (['F', 'W'], ['C90'], ['I1'], [], 'C901', + ( + ['E', 'W'], + ['E13'], + [], + [], + [], + 'E131', + style_guide.Decision.Ignored, + ), + ( + ['E', 'W'], + ['E13'], + [], + [], + [], + 'E126', + style_guide.Decision.Selected, + ), + (['E2'], ['E21'], [], [], [], 'E221', style_guide.Decision.Selected), + (['E2'], ['E21'], [], [], [], 'E212', style_guide.Decision.Ignored), + (['F', 'W'], ['C90'], [], ['I1'], [], 'C901', style_guide.Decision.Ignored), - (['E', 'W'], ['C'], [], [], 'E131', + (['E', 'W'], ['C'], [], [], [], 'E131', style_guide.Decision.Selected), - (defaults.SELECT, defaults.IGNORE, [], ['I'], 'I101', + (defaults.SELECT, defaults.IGNORE, [], [], ['I'], 'I101', style_guide.Decision.Selected), - (defaults.SELECT, defaults.IGNORE, ['G'], ['I'], 'G101', + (defaults.SELECT, defaults.IGNORE, [], ['G'], ['I'], 'G101', style_guide.Decision.Selected), - (defaults.SELECT, ['G1'], ['G'], ['I'], 'G101', + (defaults.SELECT, ['G1'], [], ['G'], ['I'], 'G101', style_guide.Decision.Ignored), - (defaults.SELECT, ['E126'], [], ['I'], 'I101', + (defaults.SELECT, ['E126'], [], [], ['I'], 'I101', style_guide.Decision.Selected), - (['E', 'W'], defaults.IGNORE, ['I'], [], 'I101', + (['E', 'W'], defaults.IGNORE, [], ['I'], [], 'I101', style_guide.Decision.Ignored), + ( + ["E", "W", "I101"], + defaults.IGNORE + ("I101",), + ["I101"], + [], + [], + "I101", + style_guide.Decision.Selected, + ), + ( + ["E", "W"], + defaults.IGNORE + ("I101",), + ["I101"], + [], + [], + "I101", + style_guide.Decision.Ignored, + ), # TODO(sigmavirus24) Figure out how to exercise the final catch-all # return statement ] ) -def test_more_specific_decision_for_logic(select, ignore, extend_select, - enabled_extensions, error_code, - expected): +def test_more_specific_decision_for_logic( + select, ignore, extended_default_ignore, extend_select, + enabled_extensions, error_code, + expected, +): """Verify the logic of DecisionEngine.more_specific_decision_for.""" decider = style_guide.DecisionEngine( create_options( select=select, ignore=ignore, + extended_default_ignore=extended_default_ignore, extended_default_select=extend_select, enable_extensions=enabled_extensions, ), diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index 5503d7e..c24472a 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -13,6 +13,7 @@ from flake8.formatting import base def create_options(**kwargs): """Create and return an instance of argparse.Namespace.""" kwargs.setdefault('select', []) + kwargs.setdefault('extended_default_ignore', []) kwargs.setdefault('extended_default_select', []) kwargs.setdefault('ignore', []) kwargs.setdefault('extend_ignore', [])