Rev 3844: Reproduce bug #300055. in lp:~vila/bzr/300055-log-forward

Vincent Ladeuil v.ladeuil+lp at free.fr
Thu Nov 20 10:53:38 GMT 2008


At lp:~vila/bzr/300055-log-forward

------------------------------------------------------------
revno: 3844
revision-id: v.ladeuil+lp at free.fr-20081120105333-fgitmj50y2ceuchr
parent: v.ladeuil+lp at free.fr-20081120095527-imjiaptw3w5m2vbv
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 300055-log-forward
timestamp: Thu 2008-11-20 11:53:33 +0100
message:
  Reproduce bug #300055.
  
  * bzrlib/tests/test_log.py:
  (TestGetViewRevisions.test_get_view_revisions_forward,
  TestGetViewRevisions.test_get_view_revisions_reverse,
  TestGetViewRevisions.test_get_view_revisions_merge,
  TestGetViewRevisions.test_get_view_revisions_merge_reverse,
  TestGetViewRevisions.test_get_view_revisions_merge2): More
  cosmetic changes.
  (TestReverseByDepth): New tests to reprpduce bug #300055.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_log.py'
--- a/bzrlib/tests/test_log.py	2008-11-20 09:55:27 +0000
+++ b/bzrlib/tests/test_log.py	2008-11-20 10:53:33 +0000
@@ -796,9 +796,10 @@
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'forward'))
         self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0)],
-            revisions)
-        revisions2 = list(log.get_view_revisions(mainline_revs, rev_nos, wt.branch,
-                                             'forward', include_merges=False))
+                         revisions)
+        revisions2 = list(log.get_view_revisions(
+                mainline_revs, rev_nos, wt.branch, 'forward',
+                include_merges=False))
         self.assertEqual(revisions, revisions2)
 
     def test_get_view_revisions_reverse(self):
@@ -809,7 +810,7 @@
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'reverse'))
         self.assertEqual([('3', '3', 0), ('2', '2', 0), ('1', '1', 0), ],
-            revisions)
+                         revisions)
         revisions2 = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'reverse',
                 include_merges=False))
@@ -823,14 +824,14 @@
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'forward'))
         self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0),
-            ('4b', '4', 0), ('4a', '3.1.1', 1)],
-            revisions)
+                          ('4b', '4', 0), ('4a', '3.1.1', 1)],
+                         revisions)
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'forward',
                 include_merges=False))
         self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0),
-            ('4b', '4', 0)],
-            revisions)
+                          ('4b', '4', 0)],
+                         revisions)
 
     def test_get_view_revisions_merge_reverse(self):
         """Test get_view_revisions in reverse when there are merges"""
@@ -840,14 +841,14 @@
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'reverse'))
         self.assertEqual([('4b', '4', 0), ('4a', '3.1.1', 1),
-            ('3', '3', 0), ('2', '2', 0), ('1', '1', 0)],
-            revisions)
+                          ('3', '3', 0), ('2', '2', 0), ('1', '1', 0)],
+                         revisions)
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'reverse',
                 include_merges=False))
         self.assertEqual([('4b', '4', 0), ('3', '3', 0), ('2', '2', 0),
-            ('1', '1', 0)],
-            revisions)
+                          ('1', '1', 0)],
+                         revisions)
 
     def test_get_view_revisions_merge2(self):
         """Test get_view_revisions when there are merges"""
@@ -857,15 +858,15 @@
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'forward'))
         expected = [('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
-            ('3a', '2.1.1', 1), ('3b', '2.2.1', 1), ('4b', '4', 0),
-            ('4a', '2.2.2', 1)]
+                    ('3a', '2.1.1', 1), ('3b', '2.2.1', 1), ('4b', '4', 0),
+                    ('4a', '2.2.2', 1)]
         self.assertEqual(expected, revisions)
         revisions = list(log.get_view_revisions(
                 mainline_revs, rev_nos, wt.branch, 'forward',
                 include_merges=False))
         self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
-            ('4b', '4', 0)],
-            revisions)
+                          ('4b', '4', 0)],
+                         revisions)
 
 
 class TestGetRevisionsTouchingFileID(tests.TestCaseWithTransport):
@@ -1062,3 +1063,44 @@
         self.assertEqual('jsmith at example.com', lf.short_author(rev))
         rev.properties['author'] = 'John Smith jsmith at example.com'
         self.assertEqual('John Smith', lf.short_author(rev))
+
+
+class TestReverseByDepth(tests.TestCase):
+    """Test reverse_by_depth behavior.
+
+    This is used to present revisions in forward (oldest first) order in a nice
+    layout.
+
+    The tests use lighter revision description to ease reading.
+    """
+
+    def assertReversed(self, forward, backward):
+        # Transform the descriptions to suit the API: tests use (revno, depth),
+        # while the API expects (revid, revno, depth)
+        def complete_revisions(l):
+            """Transform the description to suit the API.
+
+            Tests use (revno, depth) whil the API expects (revid, revno, depth).
+            Since the revid is arbitrary, we just duplicate revno
+            """
+            return [ (r, r, d) for r, d in l]
+        forward = complete_revisions(forward)
+        backward= complete_revisions(backward)
+        self.assertEqual(forward, log.reverse_by_depth(backward))
+
+
+    def test_mainline_revisions(self):
+        self.assertReversed([( '1', 0), ('2', 0)],
+                            [('2', 0), ('1', 0)])
+
+    def test_merged_revisions(self):
+        self.assertReversed([('1', 0), ('2', 0), ('1.1', 1), ('1.2', 1),],
+                            [('2', 0), ('1.2', 1), ('1.1', 1), ('1', 0),])
+
+    def test_shifted_merged_revisions(self):
+        """Test irregular layout.
+
+        Requesting revisions touching a file can produce "holes" in the depths.
+        """
+        self.assertReversed([('1', 0), ('2', 0), ('1.1', 2), ('1.2', 2),],
+                            [('2', 0), ('1.2', 2), ('1.1', 2), ('1', 0),])



More information about the bazaar-commits mailing list