Rev 3389: Stacked make_mpdiffs. in http://people.ubuntu.com/~robertc/baz2.0/shallow-branch

Robert Collins robertc at robertcollins.net
Wed Jun 25 02:29:52 BST 2008


At http://people.ubuntu.com/~robertc/baz2.0/shallow-branch

------------------------------------------------------------
revno: 3389
revision-id: robertc at robertcollins.net-20080625012948-aclmfg49kaf8zdv8
parent: robertc at robertcollins.net-20080625004056-22wn6kasogkq9erq
committer: Robert Collins <robertc at robertcollins.net>
branch nick: stacking-knits
timestamp: Wed 2008-06-25 11:29:48 +1000
message:
  Stacked make_mpdiffs.
modified:
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py	2008-06-25 00:40:56 +0000
+++ b/bzrlib/tests/test_knit.py	2008-06-25 01:29:48 +0000
@@ -26,6 +26,7 @@
     errors,
     generate_ids,
     knit,
+    multiparent,
     pack,
     )
 from bzrlib.errors import (
@@ -1733,8 +1734,8 @@
         test.add_mpdiffs([(key_delta, (key_basis,),
             source.get_sha1s([key_delta])[key_delta], diffs[0])])
         self.assertEqual([("get_parent_map", set([key_basis])),
-            ('get_record_stream', [('bar',)], 'unordered', True),
-            ('get_parent_map', set([('bar',)]))],
+            ('get_record_stream', [key_basis], 'unordered', True),
+            ('get_parent_map', set([key_basis]))],
             basis.calls)
         self.assertEqual({key_delta:(key_basis,)},
             test.get_parent_map([key_delta]))
@@ -1742,4 +1743,31 @@
             'unordered', True).next().get_bytes_as('fulltext'))
 
     def test_make_mpdiffs(self):
-        pass
+        # Generating an mpdiff across a stacking boundary should detect parent
+        # texts regions.
+        key = ('foo',)
+        key_left = ('bar',)
+        key_right = ('zaphod',)
+        basis, test = self.get_basis_and_test_knit()
+        basis.add_lines(key_left, (), ['bar\n'])
+        basis.add_lines(key_right, (), ['zaphod\n'])
+        basis.calls = []
+        test.add_lines(key, (key_left, key_right),
+            ['bar\n', 'foo\n', 'zaphod\n'])
+        diffs = test.make_mpdiffs([key])
+        self.assertEqual([
+            multiparent.MultiParent([multiparent.ParentText(0, 0, 0, 1),
+                multiparent.NewText(['foo\n']),
+                multiparent.ParentText(1, 0, 2, 1)])],
+            diffs)
+        self.assertEqual(4, len(basis.calls))
+        self.assertEqual([
+            ("get_parent_map", set([key_left, key_right])),
+            ("get_parent_map", set([key_left, key_right])),
+            ("get_parent_map", set([key_left, key_right])),
+            ],
+            basis.calls[:3])
+        self.assertEqual(set([key_left, key_right]), set(basis.calls[3][1]))
+        self.assertEqual('get_record_stream', basis.calls[3][0])
+        self.assertEqual('unordered', basis.calls[3][2])
+        self.assertEqual(True, basis.calls[3][3])




More information about the bazaar-commits mailing list