change pluginmanager.register API to raise ValueError if the plugin object or the name is already registered

This commit is contained in:
holger krekel
2012-06-16 21:29:04 +02:00
parent 2e163e4aae
commit b2e87ce027
5 changed files with 15 additions and 7 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
#
__version__ = '2.2.5.dev1'
__version__ = '2.2.5.dev2'
+4 -3
View File
@@ -79,10 +79,11 @@ class PluginManager(object):
self.import_plugin(spec)
def register(self, plugin, name=None, prepend=False):
assert not self.isregistered(plugin), plugin
if self._name2plugin.get(name, None) == -1:
return
name = name or getattr(plugin, '__name__', str(id(plugin)))
if name in self._name2plugin:
return False
if self.isregistered(plugin, name):
raise ValueError("Plugin already registered: %s=%s" %(name, plugin))
#self.trace("registering", name, plugin)
self._name2plugin[name] = plugin
self.call_plugin(plugin, "pytest_addhooks", {'pluginmanager': self})