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