Rev 3761: CHKInventory core tests passing. in http://people.ubuntu.com/~robertc/baz2.0/repository
Robert Collins
robertc at robertcollins.net
Wed Nov 12 03:19:38 GMT 2008
At http://people.ubuntu.com/~robertc/baz2.0/repository
------------------------------------------------------------
revno: 3761
revision-id: robertc at robertcollins.net-20081112031934-3wj5819th95gyiwg
parent: robertc at robertcollins.net-20081112020345-98om4m9yrf8moqc7
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Wed 2008-11-12 14:19:34 +1100
message:
CHKInventory core tests passing.
modified:
bzrlib/chk_map.py chk_map.py-20081001014447-ue6kkuhofvdecvxa-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/tests/test_chk_map.py test_chk_map.py-20081001014447-ue6kkuhofvdecvxa-2
bzrlib/tests/test_inv.py testinv.py-20050722220913-1dc326138d1a5892
=== modified file 'bzrlib/chk_map.py'
--- a/bzrlib/chk_map.py 2008-11-12 02:03:45 +0000
+++ b/bzrlib/chk_map.py 2008-11-12 03:19:34 +0000
@@ -240,7 +240,7 @@
width = int(lines[2])
length = int(lines[3])
for line in lines[4:]:
- elements = line.split('\x00')
+ elements = line.split('\x00', width)
items[tuple(elements[:-1])] = elements[-1]
if len(items) != length:
raise AssertionError("item count mismatch")
@@ -389,7 +389,7 @@
@classmethod
def deserialise(klass, bytes, key):
- """Deseriaise bytes to an InternalNode, with key key.
+ """Deserialise bytes to an InternalNode, with key key.
:param bytes: The bytes of the node.
:param key: The key that the serialised node has.
=== modified file 'bzrlib/inventory.py'
--- a/bzrlib/inventory.py 2008-10-22 06:40:59 +0000
+++ b/bzrlib/inventory.py 2008-11-12 03:19:34 +0000
@@ -1396,12 +1396,12 @@
new_key = None
new_value = None
else:
- new_key = file_id
+ new_key = (file_id,)
new_value = result._entry_to_bytes(entry)
if old_path is None:
old_key = None
else:
- old_key = file_id
+ old_key = (file_id,)
id_to_entry_delta.append((old_key, new_key, new_value))
result.id_to_entry.apply_delta(id_to_entry_delta)
return result
@@ -1444,7 +1444,7 @@
result.id_to_entry = chk_map.CHKMap(chk_store, None)
delta = []
for path, entry in inventory.iter_entries():
- delta.append((None, entry.file_id, result._entry_to_bytes(entry)))
+ delta.append((None, (entry.file_id,), result._entry_to_bytes(entry)))
result.id_to_entry.apply_delta(delta)
result.id_to_entry._save()
return result
@@ -1453,13 +1453,13 @@
"""map a single file_id -> InventoryEntry."""
try:
return self._bytes_to_entry(
- self.id_to_entry.iteritems([file_id]).next()[1])
+ self.id_to_entry.iteritems([(file_id,)]).next()[1])
except StopIteration:
raise KeyError(file_id)
def has_id(self, file_id):
# Perhaps have an explicit 'contains' method on CHKMap ?
- return len(list(self.id_to_entry.iteritems([file_id]))) == 1
+ return len(list(self.id_to_entry.iteritems([(file_id,)]))) == 1
def _iter_file_id_parents(self, file_id):
"""Yield the parents of file_id up to the root."""
@@ -1473,8 +1473,8 @@
def __iter__(self):
"""Iterate over the entire inventory contents; size-of-tree - beware!."""
- for file_id, _ in self.id_to_entry.iteritems():
- yield file_id
+ for key, _ in self.id_to_entry.iteritems():
+ yield key[-1]
def __len__(self):
"""Return the number of entries in the inventory."""
=== modified file 'bzrlib/tests/test_chk_map.py'
--- a/bzrlib/tests/test_chk_map.py 2008-11-12 02:03:45 +0000
+++ b/bzrlib/tests/test_chk_map.py 2008-11-12 03:19:34 +0000
@@ -243,6 +243,22 @@
self.assertEqual([(("foo bar",), "baz"), (("quux",), "blarh")],
sorted(node.iteritems(None)))
+ def test_deserialise_item_with_null_width_1(self):
+ node = LeafNode.deserialise(
+ "chkleaf:\n0\n1\n2\nfoo\x00bar\x00baz\nquux\x00blarh\n",
+ ("sha1:1234",))
+ self.assertEqual(2, len(node))
+ self.assertEqual([(("foo",), "bar\x00baz"), (("quux",), "blarh")],
+ sorted(node.iteritems(None)))
+
+ def test_deserialise_item_with_null_width_2(self):
+ node = LeafNode.deserialise(
+ "chkleaf:\n0\n2\n2\nfoo\x001\x00bar\x00baz\nquux\x00\x00blarh\n",
+ ("sha1:1234",))
+ self.assertEqual(2, len(node))
+ self.assertEqual([(("foo", "1"), "bar\x00baz"), (("quux", ""), "blarh")],
+ sorted(node.iteritems(None)))
+
def test_iteritems_selected_one_of_two_items(self):
node = LeafNode.deserialise(
"chkleaf:\n0\n1\n2\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
=== modified file 'bzrlib/tests/test_inv.py'
--- a/bzrlib/tests/test_inv.py 2008-11-05 06:31:00 +0000
+++ b/bzrlib/tests/test_inv.py 2008-11-12 03:19:34 +0000
@@ -219,7 +219,7 @@
'chkinventory:\n',
'revision_id: foo\n',
'root_id: TREE_ROOT\n',
- 'id_to_entry: sha1:3c84f56e89a6089ee0c6cc25becdcaa368e83632\n'
+ 'id_to_entry: sha1:36219af8518a9bed1e52db58e99131db2a00b329\n',
],
chk_inv.to_lines())
More information about the bazaar-commits
mailing list