summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake8/plugins/manager.py20
-rw-r--r--tests/unit/test_plugin_manager.py28
-rw-r--r--tests/unit/test_plugin_type_manager.py33
3 files changed, 44 insertions, 37 deletions
diff --git a/flake8/plugins/manager.py b/flake8/plugins/manager.py
index 4a06c75..02a136c 100644
--- a/flake8/plugins/manager.py
+++ b/flake8/plugins/manager.py
@@ -152,16 +152,6 @@ class PluginManager(object):
self.names = []
self._load_all_plugins()
- def __contains__(self, name):
- """Check if the entry-point name is in this plugin manager."""
- LOG.debug('Checking for "%s" in plugin manager.', name)
- return name in self.plugins
-
- def __getitem__(self, name):
- """Retrieve a plugin by its entry-point name."""
- LOG.debug('Retrieving plugin for "%s".', name)
- return self.plugins[name]
-
def _load_all_plugins(self):
LOG.debug('Loading entry-points for "%s".', self.namespace)
for entry_point in pkg_resources.iter_entry_points(self.namespace):
@@ -203,6 +193,16 @@ class PluginTypeManager(object):
self.manager = PluginManager(self.namespace)
self.plugins_loaded = False
+ def __contains__(self, name):
+ """Check if the entry-point name is in this plugin type manager."""
+ LOG.debug('Checking for "%s" in plugin type manager.', name)
+ return name in self.plugins
+
+ def __getitem__(self, name):
+ """Retrieve a plugin by its name."""
+ LOG.debug('Retrieving plugin for "%s".', name)
+ return self.plugins[name]
+
@property
def names(self):
"""Proxy attribute to underlying manager."""
diff --git a/tests/unit/test_plugin_manager.py b/tests/unit/test_plugin_manager.py
index 05073cf..8991b96 100644
--- a/tests/unit/test_plugin_manager.py
+++ b/tests/unit/test_plugin_manager.py
@@ -37,32 +37,6 @@ def test_calls_pkg_resources_creates_plugins_automaticaly(iter_entry_points):
@mock.patch('pkg_resources.iter_entry_points')
-def test_proxies_contains_to_plugins_dictionary(iter_entry_points):
- """Verify that we can use the PluginManager like a dictionary."""
- iter_entry_points.return_value = [
- create_entry_point_mock('T100'),
- create_entry_point_mock('T200'),
- ]
- plugin_mgr = manager.PluginManager(namespace='testing.pkg_resources')
-
- assert 'T100' in plugin_mgr
- assert 'T200' in plugin_mgr
-
-
-@mock.patch('pkg_resources.iter_entry_points')
-def test_proxies_getitem_to_plugins_dictionary(iter_entry_points):
- """Verify that we can use the PluginManager like a dictionary."""
- iter_entry_points.return_value = [
- create_entry_point_mock('T100'),
- create_entry_point_mock('T200'),
- ]
- plugin_mgr = manager.PluginManager(namespace='testing.pkg_resources')
-
- assert isinstance(plugin_mgr['T100'], manager.Plugin)
- assert isinstance(plugin_mgr['T200'], manager.Plugin)
-
-
-@mock.patch('pkg_resources.iter_entry_points')
def test_handles_mapping_functions_across_plugins(iter_entry_points):
"""Verify we can use the PluginManager call functions on all plugins."""
entry_point_mocks = [
@@ -71,6 +45,6 @@ def test_handles_mapping_functions_across_plugins(iter_entry_points):
]
iter_entry_points.return_value = entry_point_mocks
plugin_mgr = manager.PluginManager(namespace='testing.pkg_resources')
- plugins = [plugin_mgr[name] for name in plugin_mgr.names]
+ plugins = [plugin_mgr.plugins[name] for name in plugin_mgr.names]
assert list(plugin_mgr.map(lambda x: x)) == plugins
diff --git a/tests/unit/test_plugin_type_manager.py b/tests/unit/test_plugin_type_manager.py
index 2735dec..36fb92a 100644
--- a/tests/unit/test_plugin_type_manager.py
+++ b/tests/unit/test_plugin_type_manager.py
@@ -35,6 +35,13 @@ def create_mapping_manager_mock(plugins):
return manager_mock
+def create_manager_with_plugins(plugins):
+ """Create a fake PluginManager with a plugins dictionary."""
+ manager_mock = mock.create_autospec(manager.PluginManager)
+ manager_mock.plugins = plugins
+ return manager_mock
+
+
class TestType(manager.PluginTypeManager):
"""Fake PluginTypeManager."""
@@ -167,6 +174,32 @@ def test_provide_options(PluginManager):
extra_args)
+@mock.patch('flake8.plugins.manager.PluginManager')
+def test_proxy_contains_to_managers_plugins_dict(PluginManager):
+ """Verify that we proxy __contains__ to the manager's dictionary."""
+ plugins = {'T10%i' % i: create_plugin_mock() for i in range(8)}
+ # Return our PluginManager mock
+ PluginManager.return_value = create_manager_with_plugins(plugins)
+
+ type_mgr = TestType()
+ for i in range(8):
+ key = 'T10%i' % i
+ assert key in type_mgr
+
+
+@mock.patch('flake8.plugins.manager.PluginManager')
+def test_proxies_getitem_to_managers_plugins_dictionary(PluginManager):
+ """Verify that we can use the PluginTypeManager like a dictionary."""
+ plugins = {'T10%i' % i: create_plugin_mock() for i in range(8)}
+ # Return our PluginManager mock
+ PluginManager.return_value = create_manager_with_plugins(plugins)
+
+ type_mgr = TestType()
+ for i in range(8):
+ key = 'T10%i' % i
+ assert type_mgr[key] is plugins[key]
+
+
class FakePluginTypeManager(manager.NotifierBuilder):
"""Provide an easy way to test the NotifierBuilder."""