diff options
| -rw-r--r-- | src/flake8/plugins/manager.py | 11 | ||||
| -rw-r--r-- | tests/unit/test_plugin.py | 25 |
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']) |
