Rev 2605: Handle mismatched numbers of reference lists. in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Fri Jul 13 06:41:58 BST 2007


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

------------------------------------------------------------
revno: 2605
revision-id: robertc at robertcollins.net-20070713054155-q8h3533j39cc0t7o
parent: robertc at robertcollins.net-20070712164954-gtnnmqd5oyfob20t
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Fri 2007-07-13 15:41:55 +1000
message:
  Handle mismatched numbers of reference lists.
modified:
  bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
  bzrlib/tests/test_index.py     test_index.py-20070712131115-lolkarso50vjr64s-2
=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py	2007-07-12 16:49:54 +0000
+++ b/bzrlib/index.py	2007-07-13 05:41:55 +0000
@@ -54,6 +54,8 @@
             raise errors.BadIndexKey(key)
         if _newline_null_re.search(value) is not None:
             raise errors.BadIndexValue(value)
+        if len(references) != self.reference_lists:
+            raise errors.BadIndexValue(references)
         self._nodes.append((key, references, value))
 
     def finish(self):

=== modified file 'bzrlib/tests/test_index.py'
--- a/bzrlib/tests/test_index.py	2007-07-12 16:49:54 +0000
+++ b/bzrlib/tests/test_index.py	2007-07-13 05:41:55 +0000
@@ -49,18 +49,35 @@
         self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n"
             "akey\0\0data\n\n", contents)
 
-    def test_build_index_bad_key(self):
+    def test_add_node_bad_key(self):
         builder = GraphIndexBuilder()
         self.assertRaises(errors.BadIndexKey, builder.add_node, 'a key',
             (), 'data')
 
-    def test_build_index_bad_data(self):
+    def test_add_node_bad_data(self):
         builder = GraphIndexBuilder()
         self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
             (), 'data\naa')
         self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
             (), 'data\0aa')
 
+    def test_add_node_bad_mismatched_ref_lists_length(self):
+        builder = GraphIndexBuilder()
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            ([], ), 'data aa')
+        builder = GraphIndexBuilder(reference_lists=1)
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            (), 'data aa')
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            ([], []), 'data aa')
+        builder = GraphIndexBuilder(reference_lists=2)
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            (), 'data aa')
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            ([], ), 'data aa')
+        self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
+            ([], [], []), 'data aa')
+
 
 class TestGraphIndex(TestCaseWithMemoryTransport):
 




More information about the bazaar-commits mailing list