Rev 3177: Return the sha1 and validator with the serialised inventory journal entry. in http://people.ubuntu.com/~robertc/baz2.0/inventory.journalled
Robert Collins
robertc at robertcollins.net
Sun Jan 6 23:20:58 GMT 2008
At http://people.ubuntu.com/~robertc/baz2.0/inventory.journalled
------------------------------------------------------------
revno: 3177
revision-id:robertc at robertcollins.net-20080106232051-ry3g48jurtr1w2bw
parent: robertc at robertcollins.net-20080106225428-subkfjp082a0t1ya
committer: Robert Collins <robertc at robertcollins.net>
branch nick: inventory.journalled
timestamp: Mon 2008-01-07 10:20:51 +1100
message:
Return the sha1 and validator with the serialised inventory journal entry.
modified:
bzrlib/journalled_inventory.py journalled_inventory-20080103020931-0ht5n40kwc0p7fy1-1
bzrlib/tests/test_journalled_inv.py test_journalled_inv.-20080103012121-ny2w9slze5jgty8i-1
=== modified file 'bzrlib/journalled_inventory.py'
--- a/bzrlib/journalled_inventory.py 2008-01-06 22:54:28 +0000
+++ b/bzrlib/journalled_inventory.py 2008-01-06 23:20:51 +0000
@@ -26,7 +26,7 @@
__all__ = ['EntryAccess', 'InventoryJournal']
from bzrlib import errors
-from bzrlib.osutils import basename, sha_string
+from bzrlib.osutils import basename, sha_string, sha_strings
from bzrlib import inventory
from bzrlib.revision import NULL_REVISION
from bzrlib.tsort import topo_sort
@@ -275,6 +275,8 @@
delta.
:param delta_to_new: An inventory delta such as Inventory.apply_delta
takes.
+ :return: The serialised delta as lines, the sha1 of the lines, and the
+ journal entry validator.
"""
lines = ['', '', '', '']
to_line = self._delta_item_to_line
@@ -288,7 +290,12 @@
lines[1] = "parent: %s\n" % old_inventory_name
lines[2] = "parent_validator: %s\n" % old_validator
lines[3] = "version: %s\n" % new_name
- return lines
+ lines_sha = sha_strings(lines)
+ if old_inventory_name == NULL_REVISION:
+ validator = lines_sha
+ else:
+ validator = sha_string(old_validator + lines_sha)
+ return lines, lines_sha, validator
def _delta_item_to_line(self, delta_item):
"""Convert delta_item to a line."""
=== modified file 'bzrlib/tests/test_journalled_inv.py'
--- a/bzrlib/tests/test_journalled_inv.py 2008-01-06 22:54:28 +0000
+++ b/bzrlib/tests/test_journalled_inv.py 2008-01-06 23:20:51 +0000
@@ -44,6 +44,8 @@
version: entry-version
/\x00an-id\x00\x00a at e\xc3\xa5ample.com--2004\x00dir\x00\x00
"""
+root_only_validator = "4064d5f6ecde08d963e14b426fd10a6624d33a07"
+
root_change_lines = """format: bzr journalled inventory v1 (bzr 1.2)
parent: entry-version
@@ -82,9 +84,9 @@
"""
validator_only = """format: bzr journalled inventory v1 (bzr 1.2)
-parent: null:
-parent_validator: abc
-version: entry-version
+parent: entry-version
+parent_validator: 4064d5f6ecde08d963e14b426fd10a6624d33a07
+version: new-entry
"""
@@ -97,7 +99,9 @@
delta = inventory.make_inv_delta(old_inv, new_inv)
journal = journalled_inventory.InventoryJournal(versioned_root=True,
tree_references=True)
- self.assertEqual(StringIO(empty_lines).readlines(),
+ self.assertEqual((StringIO(empty_lines).readlines(),
+ '47177375263abcfd2b41eafde1ca79c0c69b3a44',
+ '47177375263abcfd2b41eafde1ca79c0c69b3a44'),
journal.delta_to_lines(NULL_REVISION, "", NULL_REVISION, delta))
def test_root_only_to_lines(self):
@@ -109,7 +113,8 @@
delta = inventory.make_inv_delta(old_inv, new_inv)
journal = journalled_inventory.InventoryJournal(versioned_root=True,
tree_references=True)
- self.assertEqual(StringIO(root_only_lines).readlines(),
+ self.assertEqual((StringIO(root_only_lines).readlines(),
+ root_only_validator, root_only_validator),
journal.delta_to_lines(NULL_REVISION, "", 'entry-version', delta))
def test_unversioned_root(self):
@@ -120,17 +125,23 @@
delta = inventory.make_inv_delta(old_inv, new_inv)
journal = journalled_inventory.InventoryJournal(versioned_root=False,
tree_references=False)
- self.assertEqual(StringIO(root_only_unversioned).readlines(),
+ self.assertEqual((StringIO(root_only_unversioned).readlines(),
+ '34627d3eb81bd954ef7fd6d3922cf1ab9d3186aa',
+ '34627d3eb81bd954ef7fd6d3922cf1ab9d3186aa'),
journal.delta_to_lines(NULL_REVISION, "", 'entry-version', delta))
- def test_validator_stored(self):
+ def test_old_validator_stored_new_validator_returned(self):
old_inv = Inventory(None)
new_inv = Inventory(None)
delta = inventory.make_inv_delta(old_inv, new_inv)
journal = journalled_inventory.InventoryJournal(versioned_root=False,
tree_references=False)
- self.assertEqual(StringIO(validator_only).readlines(),
- journal.delta_to_lines(NULL_REVISION, "abc", 'entry-version', delta))
+ lines_sha = sha_string(validator_only)
+ self.assertEqual((StringIO(validator_only).readlines(),
+ lines_sha,
+ sha_string(root_only_validator + lines_sha)),
+ journal.delta_to_lines('entry-version', root_only_validator,
+ 'new-entry', delta))
def test_unversioned_non_root_errors(self):
old_inv = Inventory(None)
@@ -231,7 +242,9 @@
delta = inventory.make_inv_delta(old_inv, new_inv)
journal = journalled_inventory.InventoryJournal(versioned_root=True,
tree_references=True)
- self.assertEqual(StringIO(reference_lines).readlines(),
+ self.assertEqual((StringIO(reference_lines).readlines(),
+ '70f7bd3ff76816ed74c8c0a11c2b6f63449b5546',
+ '70f7bd3ff76816ed74c8c0a11c2b6f63449b5546'),
journal.delta_to_lines(NULL_REVISION, "", 'entry-version', delta))
def test_parse_no_bytes(self):
@@ -550,10 +563,12 @@
delta = inventory.make_inv_delta(old_inv, inv)
journal = journalled_inventory.InventoryJournal(versioned_root=True,
tree_references=True)
- lines = journal.delta_to_lines(NULL_REVISION, "", inv.revision_id, delta)
+ lines, lines_sha, validator = journal.delta_to_lines(NULL_REVISION, "",
+ inv.revision_id, delta)
serialised = ''.join(lines)
self.assertIsInstance(serialised, str)
self.assertEqual(expected, serialised)
+ self.assertEqual(validator, journal_entry.get_validator())
class TestContent(TestCase):
More information about the bazaar-commits
mailing list