🐛 fix get_primary_key will fail when a module is loaded later. fix #8
This commit is contained in:
parent
38531382cb
commit
92b65ac022
|
@ -255,8 +255,7 @@ class PluginManager(object):
|
|||
a instance of plugin info
|
||||
"""
|
||||
self._logger.debug("load %s later", plugin_info.absolute_import_path)
|
||||
for key in plugin_info.tags():
|
||||
self.registry[key.lower()].append(plugin_info)
|
||||
self._update_registry_and_expand_tag_groups(plugin_info)
|
||||
|
||||
def load_me_now(self, key, library=None, **keywords):
|
||||
"""
|
||||
|
@ -319,18 +318,21 @@ class PluginManager(object):
|
|||
a instance of plugin info
|
||||
"""
|
||||
self._logger.debug("register %s", _show_me_your_name(plugin_cls))
|
||||
primary_tag = None
|
||||
for index, key in enumerate(plugin_info.tags()):
|
||||
plugin_info.cls = plugin_cls
|
||||
self.registry[key.lower()].append(plugin_info)
|
||||
if index == 0:
|
||||
primary_tag = key.lower()
|
||||
self.tag_groups[key.lower()] = primary_tag
|
||||
plugin_info.cls = plugin_cls
|
||||
self._update_registry_and_expand_tag_groups(plugin_info)
|
||||
|
||||
def get_primary_key(self, key):
|
||||
__key = key.lower()
|
||||
return self.tag_groups.get(__key, None)
|
||||
|
||||
def _update_registry_and_expand_tag_groups(self, plugin_info):
|
||||
primary_tag = None
|
||||
for index, key in enumerate(plugin_info.tags()):
|
||||
self.registry[key.lower()].append(plugin_info)
|
||||
if index == 0:
|
||||
primary_tag = key.lower()
|
||||
self.tag_groups[key.lower()] = primary_tag
|
||||
|
||||
|
||||
def _register_class(cls):
|
||||
"""Reigister a newly created plugin manager"""
|
||||
|
|
|
@ -33,6 +33,8 @@ def test_load_me_now(mock_import):
|
|||
manager.load_me_later(plugin_info)
|
||||
actual = manager.load_me_now(test_plugin)
|
||||
eq_(actual, custom_class)
|
||||
eq_(manager.tag_groups, {"my plugin": "my plugin"})
|
||||
eq_(plugin_info, manager.registry["my plugin"][0])
|
||||
|
||||
|
||||
@raises(Exception)
|
||||
|
@ -87,6 +89,7 @@ def test_register_a_plugin():
|
|||
manager.register_a_plugin(TestClass, plugin_info)
|
||||
eq_(plugin_info.cls, TestClass)
|
||||
eq_(manager.registry["my"][0], plugin_info)
|
||||
eq_(manager.tag_groups, {"my": "my"})
|
||||
|
||||
|
||||
def test_get_a_plugin():
|
||||
|
|
Loading…
Reference in New Issue