Procházet zdrojové kódy

Better handling of duplicate default

Currently, an error is raised if more than one default is defined.

When including another manifest, it is likely that a default has
been defined in both manifests.

Don't raise an error if all the defaults defined have the same
attributes.

Change-Id: I2603020687e2ba04c2c62c3268ee375279b34a08
Signed-off-by: Julien Campergue <julien.campergue@parrot.com>
Julien Campergue před 12 roky
rodič
revize
7487992bd3
1 změnil soubory, kde provedl 14 přidání a 5 odebrání
  1. 14 5
      manifest_xml.py

+ 14 - 5
manifest_xml.py

@@ -51,6 +51,12 @@ class _Default(object):
   sync_c = False
   sync_s = False
 
+  def __eq__(self, other):
+    return self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return self.__dict__ != other.__dict__
+
 class _XmlRemote(object):
   def __init__(self,
                name,
@@ -422,11 +428,14 @@ class XmlManifest(object):
 
     for node in itertools.chain(*node_list):
       if node.nodeName == 'default':
-        if self._default is not None:
-          raise ManifestParseError(
-              'duplicate default in %s' %
-              (self.manifestFile))
-        self._default = self._ParseDefault(node)
+        new_default = self._ParseDefault(node)
+        if self._default is None:
+          self._default = new_default
+        elif new_default != self._default:
+            raise ManifestParseError(
+                'duplicate default in %s' %
+                (self.manifestFile))
+
     if self._default is None:
       self._default = _Default()