summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/flake8/plugins/manager.py11
-rw-r--r--tests/unit/test_plugin.py25
2 files changed, 34 insertions, 2 deletions
diff --git a/src/flake8/plugins/manager.py b/src/flake8/plugins/manager.py
index a5f1c3b..52b658c 100644
--- a/src/flake8/plugins/manager.py
+++ b/src/flake8/plugins/manager.py
@@ -182,10 +182,17 @@ class Plugin(object):
LOG.critical(str(failed_to_load))
raise failed_to_load
- def enable(self, optmanager):
+ def enable(self, optmanager, options=None):
"""Remove plugin name from the default ignore list."""
optmanager.remove_from_default_ignore([self.name])
optmanager.extend_default_select([self.name])
+ if not options:
+ return
+ try:
+ options.ignore.remove(self.name)
+ except (ValueError, KeyError):
+ LOG.debug('Attempted to remove %s from the ignore list but it was '
+ 'not a member of the list.', self.name)
def disable(self, optmanager):
"""Add the plugin name to the default ignore list."""
@@ -202,7 +209,7 @@ class Plugin(object):
parse_options(options)
if self.name in options.enable_extensions:
- self.enable(optmanager)
+ self.enable(optmanager, options)
def register_options(self, optmanager):
"""Register the plugin's command-line options on the OptionManager.
diff --git a/tests/unit/test_plugin.py b/tests/unit/test_plugin.py
index 2cc0645..84f676a 100644
--- a/tests/unit/test_plugin.py
+++ b/tests/unit/test_plugin.py
@@ -162,3 +162,28 @@ def test_provide_options():
plugin_obj.parse_options.assert_called_once_with(
option_manager, option_values, None
)
+
+
+@pytest.mark.parametrize('ignore_list, code, expected_list', [
+ (['E', 'W', 'F', 'C9'], 'W', ['E', 'F', 'C9']),
+ (['E', 'W', 'F'], 'C9', ['E', 'W', 'F']),
+])
+def test_enable(ignore_list, code, expected_list):
+ """Verify that enabling a plugin removes it from the ignore list."""
+ options = mock.Mock(ignore=ignore_list)
+ optmanager = mock.Mock()
+ plugin = manager.Plugin(code, mock.Mock())
+
+ plugin.enable(optmanager, options)
+
+ assert options.ignore == expected_list
+
+
+def test_enable_without_providing_parsed_options():
+ """Verify that enabling a plugin removes it from the ignore list."""
+ optmanager = mock.Mock()
+ plugin = manager.Plugin('U4', mock.Mock())
+
+ plugin.enable(optmanager)
+
+ optmanager.remove_from_default_ignore.assert_called_once_with(['U4'])