Rev 5656: (vila) Fix a traceback attempting to "bzr dump-btree --raw" a btree file in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Wed Feb 9 17:10:10 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5656 [merge]
revision-id: pqm at pqm.ubuntu.com-20110209171005-2kb2a57fn3djkfv6
parent: pqm at pqm.ubuntu.com-20110209104418-n3058l06ehubtl9a
parent: pub08 at davor.org-20110208234113-4bp8xy2dycnv5xps
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2011-02-09 17:10:05 +0000
message:
  (vila) Fix a traceback attempting to "bzr dump-btree --raw" a btree file
   that's well formed, but has no data rows. (Eric Siegerman)
modified:
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/blackbox/test_dump_btree.py test_dump_btree.py-20081008203335-zkpcq230b6vubszz-1
  doc/en/release-notes/bzr-2.4.txt bzr2.4.txt-20110114053217-k7ym9jfz243fddjm-1
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2011-02-10 08:05:17 +0000
+++ b/bzrlib/builtins.py	2011-02-09 17:10:05 +0000
@@ -413,9 +413,12 @@
                 self.outf.write(page_bytes[:header_end])
                 page_bytes = data
             self.outf.write('\nPage %d\n' % (page_idx,))
-            decomp_bytes = zlib.decompress(page_bytes)
-            self.outf.write(decomp_bytes)
-            self.outf.write('\n')
+            if len(page_bytes) == 0:
+                self.outf.write('(empty)\n');
+            else:
+                decomp_bytes = zlib.decompress(page_bytes)
+                self.outf.write(decomp_bytes)
+                self.outf.write('\n')
 
     def _dump_entries(self, trans, basename):
         try:

=== modified file 'bzrlib/tests/blackbox/test_dump_btree.py'
--- a/bzrlib/tests/blackbox/test_dump_btree.py	2010-03-25 09:39:03 +0000
+++ b/bzrlib/tests/blackbox/test_dump_btree.py	2011-02-08 23:06:34 +0000
@@ -91,3 +91,40 @@
         finally:
             out_f.close()
         out, err = self.run_bzr('dump-btree test.btree')
+
+    def create_sample_empty_btree_index(self):
+        builder = btree_index.BTreeBuilder(
+            reference_lists=1, key_elements=2)
+        out_f = builder.finish()
+        try:
+            self.build_tree_contents([('test.btree', out_f.read())])
+        finally:
+            out_f.close()
+
+    def test_dump_empty_btree_smoke(self):
+        self.create_sample_empty_btree_index()
+        out, err = self.run_bzr('dump-btree test.btree')
+        self.assertEqualDiff("", out)
+
+    def test_dump_empty_btree_http_smoke(self):
+        self.transport_readonly_server = http_server.HttpServer
+        self.create_sample_empty_btree_index()
+        url = self.get_readonly_url('test.btree')
+        out, err = self.run_bzr(['dump-btree', url])
+        self.assertEqualDiff("", out)
+
+    def test_dump_empty_btree_raw_smoke(self):
+        self.create_sample_empty_btree_index()
+        out, err = self.run_bzr('dump-btree test.btree --raw')
+        self.assertEqualDiff(
+            'Root node:\n'
+            'B+Tree Graph Index 2\n'
+            'node_ref_lists=1\n'
+            'key_elements=2\n'
+            'len=0\n'
+            'row_lengths=\n'
+            '\n'
+            'Page 0\n'
+            '(empty)\n',
+            out)
+

=== modified file 'doc/en/release-notes/bzr-2.4.txt'
--- a/doc/en/release-notes/bzr-2.4.txt	2011-02-09 10:44:18 +0000
+++ b/doc/en/release-notes/bzr-2.4.txt	2011-02-09 17:10:05 +0000
@@ -86,6 +86,9 @@
   ``bzr plugins`` and in crash reports.
   (#704195, Martin Pool)
 
+* ``bzr dump-btree --raw`` no longer tracebacks on a B-Tree file
+  containing no rows. (Eric Siegerman, #715508)
+
 Documentation
 *************
 




More information about the bazaar-commits mailing list