[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