Rev 36: Support format 5 inventories with root ids. in http://people.ubuntu.com/~robertc/baz2.0/plugins/search/trunk

Robert Collins robertc at robertcollins.net
Sat Jun 14 08:51:29 BST 2008


At http://people.ubuntu.com/~robertc/baz2.0/plugins/search/trunk

------------------------------------------------------------
revno: 36
revision-id: robertc at robertcollins.net-20080614075117-x05en683cw32vzzf
parent: robertc at robertcollins.net-20080614063730-yt8zrdpg7yxwgqnd
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Sat 2008-06-14 17:51:17 +1000
message:
  Support format 5 inventories with root ids.
modified:
  inventory.py                   inventory.py-20080614043027-u57i4xjlc5ginuft-1
  tests/test_inventory.py        test_inventory.py-20080614043027-u57i4xjlc5ginuft-2
=== modified file 'inventory.py'
--- a/inventory.py	2008-06-14 05:07:54 +0000
+++ b/inventory.py	2008-06-14 07:51:17 +0000
@@ -22,7 +22,7 @@
 
 _file_ids_name_regex = lazy_regex.lazy_compile(
         r'file_id="(?P<file_id>[^"]+)"'
-        r'.* name="(?P<name>[^"]*)"'
+        r'(?:.* name="(?P<name>[^"]*)")?'
         r'(?:.* parent_id="(?P<parent_id>[^"]+)")?'
         )
 
@@ -41,6 +41,9 @@
         if match is None:
             continue
         file_id, name, parent_id = match.group('file_id', 'name', 'parent_id')
+        if name is None and parent_id is None:
+            # format 5 root
+            name = ''
         found_ids[file_id] = (name, parent_id)
         if parent_id is None:
             # no parent, stash its name now to avoid special casing

=== modified file 'tests/test_inventory.py'
--- a/tests/test_inventory.py	2008-06-14 05:07:54 +0000
+++ b/tests/test_inventory.py	2008-06-14 07:51:17 +0000
@@ -87,3 +87,21 @@
         self.assertEqual({'3dir':'subdir',
             'a-root':''},
             inventory.paths_from_ids(xml, serializer, ['3dir', 'a-root']))
+
+    def test_format_5_unique_root(self):
+        from bzrlib.xml5 import Serializer_v5
+        serializer = Serializer_v5()
+        xml = [
+            '<inventory file_id="root" format="5" revision_id="rev1">\n',
+            '<file file_id="__init__" name="__init__.py" parent_id="root" revision="rev1" text_sha1="f2bcc80a5f26cba9ce168ddfe038562c658e2d37" text_size="638" />\n',
+            '<directory file_id="tests" name="tests" parent_id="root" revision="rev1" />\n',
+            '<file file_id="test.py" name="test.py" parent_id="tests" revision="rev1" text_sha1="a76a16cfe684b4f34374a110cb7bd4482de533d1" text_size="697" />\n',
+            '</inventory>\n'
+            ]
+        # All individually is enough to test the lookup of the root id/path:
+        self.assertEqual({'__init__':'__init__.py'},
+            inventory.paths_from_ids(xml, serializer, ['__init__']))
+        self.assertEqual({'tests':'tests'},
+            inventory.paths_from_ids(xml, serializer, ['tests']))
+        self.assertEqual({'test.py':'tests/test.py'},
+            inventory.paths_from_ids(xml, serializer, ['test.py']))




More information about the bazaar-commits mailing list