move managing of off_by_default / enable_extensions to plugin loading

This commit is contained in:
Anthony Sottile 2022-01-01 18:28:11 -05:00
parent ff13916d74
commit a8333e2bf2
12 changed files with 137 additions and 111 deletions

View file

@ -90,7 +90,7 @@ def mock_file_checker_with_plugin(plugin_target):
),
),
]
plugins = finder.load_plugins(to_load, [])
plugins = finder.load_plugins(to_load, [], set())
# Prevent it from reading lines from stdin or somewhere else
with mock.patch(

View file

@ -55,7 +55,7 @@ def test_enable_local_plugin_from_config(local_config):
cfg, cfg_dir = config.load_config(local_config, [], isolated=False)
plugins = finder.find_plugins(cfg)
plugin_paths = finder.find_local_plugin_paths(cfg, cfg_dir)
loaded_plugins = finder.load_plugins(plugins, plugin_paths)
loaded_plugins = finder.load_plugins(plugins, plugin_paths, set())
(custom_extension,) = (
loaded
@ -82,7 +82,8 @@ def test_local_plugin_can_add_option(local_config):
plugins = finder.find_plugins(cfg)
plugin_paths = finder.find_local_plugin_paths(cfg, cfg_dir)
loaded_plugins = finder.load_plugins(plugins, plugin_paths)
enabled = finder.parse_enabled(cfg, stage1_args.enable_extensions)
loaded_plugins = finder.load_plugins(plugins, plugin_paths, enabled)
option_manager = OptionManager(
version="123",

View file

@ -49,6 +49,7 @@ def test_plugins_all_plugins():
physical_line=[physical_line_plugin],
),
reporters={"R": report_plugin},
disabled=[],
)
assert tuple(plugins.all_plugins()) == (
@ -72,6 +73,7 @@ def test_plugins_versions_str():
# ignore local plugins
"custom": _loaded(_plugin(package="local")),
},
disabled=[],
)
assert plugins.versions_str() == "pkg1: 1, pkg2: 2"
@ -374,6 +376,25 @@ def test_find_local_plugins(local_plugin_cfg):
}
def test_parse_enabled_not_specified():
assert finder.parse_enabled(configparser.RawConfigParser(), None) == set()
def test_parse_enabled_from_commandline():
cfg = configparser.RawConfigParser()
cfg.add_section("flake8")
cfg.set("flake8", "enable_extensions", "A,B,C")
assert finder.parse_enabled(cfg, "D,E,F") == {"D", "E", "F"}
@pytest.mark.parametrize("opt", ("enable_extensions", "enable-extensions"))
def test_parse_enabled_from_config(opt):
cfg = configparser.RawConfigParser()
cfg.add_section("flake8")
cfg.set("flake8", opt, "A,B,C")
assert finder.parse_enabled(cfg, None) == {"A", "B", "C"}
def test_find_plugins(
tmp_path,
flake8_dist,
@ -573,7 +594,13 @@ def test_classify_plugins():
physical_line_plugin = _loaded(parameters={"physical_line": True})
classified = finder._classify_plugins(
[report_plugin, tree_plugin, logical_line_plugin, physical_line_plugin]
[
report_plugin,
tree_plugin,
logical_line_plugin,
physical_line_plugin,
],
set(),
)
assert classified == finder.Plugins(
@ -583,6 +610,27 @@ def test_classify_plugins():
physical_line=[physical_line_plugin],
),
reporters={"R": report_plugin},
disabled=[],
)
def test_classify_plugins_enable_a_disabled_plugin():
obj = mock.Mock(off_by_default=True)
plugin = _plugin(ep=_ep(name="ABC"))
loaded = _loaded(plugin=plugin, parameters={"tree": True}, obj=obj)
classified_normal = finder._classify_plugins([loaded], set())
classified_enabled = finder._classify_plugins([loaded], {"ABC"})
assert classified_normal == finder.Plugins(
checkers=finder.Checkers([], [], []),
reporters={},
disabled=[loaded],
)
assert classified_enabled == finder.Plugins(
checkers=finder.Checkers([loaded], [], []),
reporters={},
disabled=[],
)
@ -590,7 +638,7 @@ def test_classify_plugins():
def test_load_plugins():
plugin = _plugin(ep=_ep(value="aplugin:ExtensionTestPlugin2"))
ret = finder.load_plugins([plugin], ["tests/integration/subdir"])
ret = finder.load_plugins([plugin], ["tests/integration/subdir"], set())
import aplugin
@ -607,4 +655,5 @@ def test_load_plugins():
physical_line=[],
),
reporters={},
disabled=[],
)

View file

@ -30,6 +30,7 @@ def test_debug_information():
physical_line=[],
),
reporters={},
disabled=[],
)
info = debug.information("9001", plugins)

View file

@ -16,7 +16,6 @@ def create_options(**kwargs):
kwargs.setdefault("ignore", [])
kwargs.setdefault("extend_ignore", [])
kwargs.setdefault("disable_noqa", False)
kwargs.setdefault("enable_extensions", [])
return argparse.Namespace(**kwargs)
@ -64,30 +63,25 @@ def test_was_ignored_implicitly_selects_errors(
@pytest.mark.parametrize(
"select_list,extend_select,enable_extensions,error_code",
[
(["E111", "E121"], [], [], "E111"),
(["E111", "E121"], [], [], "E121"),
(["E11", "E12"], [], [], "E121"),
(["E2", "E12"], [], [], "E121"),
(["E2", "E12"], [], [], "E211"),
(["E1"], ["E2"], [], "E211"),
(["E1"], [], ["E2"], "E211"),
([], ["E2"], [], "E211"),
([], [], ["E2"], "E211"),
(["E1"], ["E2"], [], "E211"),
(["E111"], ["E121"], ["E2"], "E121"),
],
("select_list", "extend_select", "error_code"),
(
(["E111", "E121"], [], "E111"),
(["E111", "E121"], [], "E121"),
(["E11", "E12"], [], "E121"),
(["E2", "E12"], [], "E121"),
(["E2", "E12"], [], "E211"),
(["E1"], ["E2"], "E211"),
([], ["E2"], "E211"),
(["E1"], ["E2"], "E211"),
(["E111"], ["E121"], "E121"),
),
)
def test_was_selected_selects_errors(
select_list, extend_select, enable_extensions, error_code
):
def test_was_selected_selects_errors(select_list, extend_select, error_code):
"""Verify we detect users explicitly selecting an error."""
decider = style_guide.DecisionEngine(
options=create_options(
select=select_list,
extend_select=extend_select,
enable_extensions=enable_extensions,
),
)
@ -199,15 +193,20 @@ def test_decision_for(
@pytest.mark.parametrize(
"select,ignore,extended_default_ignore,extended_default_select,"
"enabled_extensions,error_code,expected",
(
"select",
"ignore",
"extended_default_ignore",
"extended_default_select",
"error_code",
"expected",
),
[
(
defaults.SELECT,
[],
[],
["I1"],
[],
"I100",
style_guide.Decision.Selected,
),
@ -216,7 +215,6 @@ def test_decision_for(
[],
[],
["I1"],
[],
"I201",
style_guide.Decision.Ignored,
),
@ -225,7 +223,6 @@ def test_decision_for(
["I2"],
[],
["I1"],
[],
"I101",
style_guide.Decision.Selected,
),
@ -234,7 +231,6 @@ def test_decision_for(
["I2"],
[],
["I1"],
[],
"I201",
style_guide.Decision.Ignored,
),
@ -243,7 +239,6 @@ def test_decision_for(
["I1"],
[],
["I10"],
[],
"I101",
style_guide.Decision.Selected,
),
@ -252,43 +247,22 @@ def test_decision_for(
["I10"],
[],
["I1"],
[],
"I101",
style_guide.Decision.Ignored,
),
(
defaults.SELECT,
[],
[],
[],
["U4"],
"U401",
style_guide.Decision.Selected,
),
(
defaults.SELECT,
["U401"],
[],
[],
["U4"],
"U401",
style_guide.Decision.Ignored,
),
(
defaults.SELECT,
["U401"],
[],
[],
["U4"],
"U402",
style_guide.Decision.Selected,
),
(
["E", "W"],
["E13"],
[],
[],
[],
"E131",
style_guide.Decision.Ignored,
),
@ -297,18 +271,16 @@ def test_decision_for(
["E13"],
[],
[],
[],
"E126",
style_guide.Decision.Selected,
),
(["E2"], ["E21"], [], [], [], "E221", style_guide.Decision.Selected),
(["E2"], ["E21"], [], [], [], "E212", style_guide.Decision.Ignored),
(["E2"], ["E21"], [], [], "E221", style_guide.Decision.Selected),
(["E2"], ["E21"], [], [], "E212", style_guide.Decision.Ignored),
(
["F", "W"],
["C90"],
[],
["I1"],
[],
"C901",
style_guide.Decision.Ignored,
),
@ -317,25 +289,14 @@ def test_decision_for(
["C"],
[],
[],
[],
"E131",
style_guide.Decision.Selected,
),
(
defaults.SELECT,
defaults.IGNORE,
[],
[],
["I"],
"I101",
style_guide.Decision.Selected,
),
(
defaults.SELECT,
defaults.IGNORE,
[],
["G"],
["I"],
"G101",
style_guide.Decision.Selected,
),
@ -344,25 +305,14 @@ def test_decision_for(
["G1"],
[],
["G"],
["I"],
"G101",
style_guide.Decision.Ignored,
),
(
defaults.SELECT,
["E126"],
[],
[],
["I"],
"I101",
style_guide.Decision.Selected,
),
(
["E", "W"],
defaults.IGNORE,
[],
["I"],
[],
"I101",
style_guide.Decision.Ignored,
),
@ -371,7 +321,6 @@ def test_decision_for(
defaults.IGNORE + ("I101",),
["I101"],
[],
[],
"I101",
style_guide.Decision.Selected,
),
@ -380,7 +329,6 @@ def test_decision_for(
defaults.IGNORE + ("I101",),
["I101"],
[],
[],
"I101",
style_guide.Decision.Ignored,
),
@ -393,7 +341,6 @@ def test_more_specific_decision_for_logic(
ignore,
extended_default_ignore,
extended_default_select,
enabled_extensions,
error_code,
expected,
):
@ -404,7 +351,6 @@ def test_more_specific_decision_for_logic(
ignore=ignore,
extended_default_select=extended_default_select,
extended_default_ignore=extended_default_ignore,
enable_extensions=enabled_extensions,
),
)

View file

@ -19,6 +19,7 @@ def test_get_style_guide():
isolated=False,
output_file=None,
verbose=0,
enable_extensions=None,
)
mockedapp = mock.Mock()
mockedapp.parse_preliminary_options.return_value = (prelim_opts, [])
@ -34,7 +35,7 @@ def test_get_style_guide():
application.assert_called_once_with()
mockedapp.parse_preliminary_options.assert_called_once_with([])
mockedapp.find_plugins.assert_called_once_with(cfg, cfg_dir)
mockedapp.find_plugins.assert_called_once_with(cfg, cfg_dir, None)
mockedapp.register_plugin_options.assert_called_once_with()
mockedapp.parse_configuration_and_cli.assert_called_once_with(
cfg, cfg_dir, []