[Checkins] SVN: PluginRegistry/trunk/ #52: Don't duplicate
interfaces during non-purge import.
Tres Seaver
tseaver at palladion.com
Tue Apr 24 14:21:58 EDT 2007
Log message for revision 74714:
#52: Don't duplicate interfaces during non-purge import.
Changed:
U PluginRegistry/trunk/CHANGES.txt
U PluginRegistry/trunk/exportimport.py
U PluginRegistry/trunk/tests/test_exportimport.py
U PluginRegistry/trunk/version.txt
-=-
Modified: PluginRegistry/trunk/CHANGES.txt
===================================================================
--- PluginRegistry/trunk/CHANGES.txt 2007-04-24 18:13:38 UTC (rev 74713)
+++ PluginRegistry/trunk/CHANGES.txt 2007-04-24 18:21:57 UTC (rev 74714)
@@ -1,5 +1,12 @@
PluginRegistry Product Changelog
+ After PluginRegistry 1.1.1
+
+ - Skip adding duplicate interfaces during non-purge import.
+ (http://www.zope.org/Collectors/PAS/52)
+
+ - Fixed test breakage on Zope 2.10.
+
PluginRegistry 1.1.1 (2006/07/25)
- Added workaround for autogen factories which assume they can
Modified: PluginRegistry/trunk/exportimport.py
===================================================================
--- PluginRegistry/trunk/exportimport.py 2007-04-24 18:13:38 UTC (rev 74713)
+++ PluginRegistry/trunk/exportimport.py 2007-04-24 18:21:57 UTC (rev 74714)
@@ -81,7 +81,9 @@
for info in reg_info['plugin_types']:
iface = _resolveDottedName(info['interface'])
- registry._plugin_types.append(iface)
+ # Avoid duplicate plugin types
+ if iface not in registry._plugin_types:
+ registry._plugin_types.append(iface)
registry._plugin_type_info[iface] = {'id': info['id'],
'title': info['title'],
'description': info['description'],
Modified: PluginRegistry/trunk/tests/test_exportimport.py
===================================================================
--- PluginRegistry/trunk/tests/test_exportimport.py 2007-04-24 18:13:38 UTC (rev 74713)
+++ PluginRegistry/trunk/tests/test_exportimport.py 2007-04-24 18:21:57 UTC (rev 74714)
@@ -428,6 +428,26 @@
self.assertEqual(len(registry.listPlugins(IBar)), 0)
+ def test_normal_with_plugins_skip_duplicates(self):
+ # See http://www.zope.org/Collectors/PAS/52
+ from Products.PluginRegistry.exportimport \
+ import importPluginRegistry
+
+ app, registry = self._initRegistry()
+
+ self.assertEqual(len(registry.listPluginTypeInfo()), 0)
+ self.assertRaises(KeyError, registry.listPlugins, IFoo)
+ self.assertRaises(KeyError, registry.listPlugins, IBar)
+
+ context = DummyImportContext(app, False)
+ context._files['pluginregistry.xml'
+ ] = _NORMAL_PLUGINREGISTRY_EXPORT
+
+ importPluginRegistry(context)
+ importPluginRegistry(context) # twice should not duplicate
+
+ self.assertEqual(len(registry.listPluginTypeInfo()), 2)
+
class AttrItemTraverser:
_marker = object()
Modified: PluginRegistry/trunk/version.txt
===================================================================
--- PluginRegistry/trunk/version.txt 2007-04-24 18:13:38 UTC (rev 74713)
+++ PluginRegistry/trunk/version.txt 2007-04-24 18:21:57 UTC (rev 74714)
@@ -1 +1 @@
-1.1.1
+1.1.1+
More information about the Checkins
mailing list