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