Rev 3365: Update the insert_record_stream contract to error if an absent record is provided. in http://people.ubuntu.com/~robertc/baz2.0/versioned_files

Robert Collins robertc at robertcollins.net
Wed Apr 30 00:08:45 BST 2008


At http://people.ubuntu.com/~robertc/baz2.0/versioned_files

------------------------------------------------------------
revno: 3365
revision-id: robertc at robertcollins.net-20080429230836-s6m93kss4mcbtc2t
parent: robertc at robertcollins.net-20080429052708-ep87a2mxn2d7i8lr
committer: Robert Collins <robertc at robertcollins.net>
branch nick: data_stream_revamp
timestamp: Wed 2008-04-30 09:08:36 +1000
message:
  Update the insert_record_stream contract to error if an absent record is provided.
modified:
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
  bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2008-04-29 00:10:45 +0000
+++ b/bzrlib/knit.py	2008-04-29 23:08:36 +0000
@@ -1109,6 +1109,9 @@
         knit_types = native_types.union(convertibles)
         adapters = {}
         for record in stream:
+            # Raise an error when a record is missing.
+            if record.storage_kind == 'absent':
+                raise RevisionNotPresent([record.key[0]], self)
             # adapt to non-tuple interface
             parents = [parent[0] for parent in record.parents]
             if record.storage_kind in knit_types:

=== modified file 'bzrlib/tests/test_versionedfile.py'
--- a/bzrlib/tests/test_versionedfile.py	2008-04-29 05:27:08 +0000
+++ b/bzrlib/tests/test_versionedfile.py	2008-04-29 23:08:36 +0000
@@ -330,6 +330,16 @@
         f.insert_record_stream(stream)
         self.assertIdenticalVersionedFile(f, source)
 
+    def test_insert_record_stream_missing_keys(self):
+        """Inserting a stream with absent keys should raise an error."""
+        f = self.get_file()
+        source = make_file_knit('source', get_transport(self.get_url('.')),
+            create=True, factory=KnitPlainFactory())
+        stream = source.get_record_stream(['missing'], 'topological',
+            False)
+        self.assertRaises(errors.RevisionNotPresent, f.insert_record_stream,
+            stream)
+
     def test_adds_with_parent_texts(self):
         f = self.get_file()
         parent_texts = {}

=== modified file 'bzrlib/weave.py'
--- a/bzrlib/weave.py	2008-04-24 07:28:18 +0000
+++ b/bzrlib/weave.py	2008-04-29 23:08:36 +0000
@@ -338,6 +338,9 @@
         """
         adapters = {}
         for record in stream:
+            # Raise an error when a record is missing.
+            if record.storage_kind == 'absent':
+                raise RevisionNotPresent([record.key[0]], self)
             # adapt to non-tuple interface
             parents = [parent[0] for parent in record.parents]
             if record.storage_kind == 'fulltext':




More information about the bazaar-commits mailing list