Rev 2696: Allow setting a writer after creating a knit._PackAccess object. in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Thu Aug 2 08:41:05 BST 2007


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

------------------------------------------------------------
revno: 2696
revision-id: robertc at robertcollins.net-20070802074102-wm3rjkbeb9bc39t2
parent: robertc at robertcollins.net-20070802073628-3q69fgiaf5vqfcpu
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Thu 2007-08-02 17:41:02 +1000
message:
  Allow setting a writer after creating a knit._PackAccess object.
modified:
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2007-08-02 07:36:28 +0000
+++ b/bzrlib/knit.py	2007-08-02 07:41:02 +0000
@@ -1829,6 +1829,12 @@
         """Pack based knits have no single file."""
         return None
 
+    def set_writer(self, writer, index, (transport, packname)):
+        """Set a writer to use for adding data."""
+        self.indices[index] = (transport, packname)
+        self.container_writer = writer
+        self.write_index = index
+
 
 class _KnitData(object):
     """Manage extraction of data from a KnitAccess, caching and decompressing."""

=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py	2007-08-02 07:34:14 +0000
+++ b/bzrlib/tests/test_knit.py	2007-08-02 07:41:02 +0000
@@ -253,6 +253,21 @@
         self.assertEqual(['1234567890', 'alpha'],
             list(access.get_raw_records(memos[0:1] + memos[2:3])))
 
+    def test_set_writer(self):
+        """The writer should be settable post construction."""
+        access = _PackAccess({})
+        transport = self.get_transport()
+        packname = 'packfile'
+        index = 'foo'
+        def write_data(bytes):
+            transport.append_bytes(packname, bytes)
+        writer = pack.ContainerWriter(write_data)
+        writer.begin()
+        access.set_writer(writer, index, (transport, packname))
+        memos = access.add_raw_records([10], '1234567890')
+        writer.end()
+        self.assertEqual(['1234567890'], list(access.get_raw_records(memos)))
+
 
 class LowLevelKnitDataTests(TestCase):
 



More information about the bazaar-commits mailing list