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