tests/test-linelog.py
changeset 43076 2372284d9457
parent 41365 876494fd967d
child 43992 e52a9c85a7a8
--- a/tests/test-linelog.py	Sat Oct 05 10:29:34 2019 -0400
+++ b/tests/test-linelog.py	Sun Oct 06 09:45:02 2019 -0400
@@ -6,12 +6,13 @@
 
 from mercurial import linelog
 
-vecratio = 3 # number of replacelines / number of replacelines_vec
-maxlinenum = 0xffffff
-maxb1 = 0xffffff
+vecratio = 3  # number of replacelines / number of replacelines_vec
+maxlinenum = 0xFFFFFF
+maxb1 = 0xFFFFFF
 maxdeltaa = 10
 maxdeltab = 10
 
+
 def _genedits(seed, endrev):
     lines = []
     random.seed(seed)
@@ -23,22 +24,26 @@
         b2 = random.randint(b1, b1 + maxdeltab)
         usevec = not bool(random.randint(0, vecratio))
         if usevec:
-            blines = [(random.randint(0, rev), random.randint(0, maxlinenum))
-                      for _ in range(b1, b2)]
+            blines = [
+                (random.randint(0, rev), random.randint(0, maxlinenum))
+                for _ in range(b1, b2)
+            ]
         else:
             blines = [(rev, bidx) for bidx in range(b1, b2)]
         lines[a1:a2] = blines
         yield lines, rev, a1, a2, b1, b2, blines, usevec
 
+
 class linelogtests(unittest.TestCase):
     def testlinelogencodedecode(self):
-        program = [linelog._eof(0, 0),
-                   linelog._jge(41, 42),
-                   linelog._jump(0, 43),
-                   linelog._eof(0, 0),
-                   linelog._jl(44, 45),
-                   linelog._line(46, 47),
-                   ]
+        program = [
+            linelog._eof(0, 0),
+            linelog._jge(41, 42),
+            linelog._jump(0, 43),
+            linelog._eof(0, 0),
+            linelog._jl(44, 45),
+            linelog._line(46, 47),
+        ]
         ll = linelog.linelog(program, maxrev=100)
         enc = ll.encode()
         # round-trips okay
@@ -46,89 +51,80 @@
         self.assertEqual(linelog.linelog.fromdata(enc), ll)
         # This encoding matches the encoding used by hg-experimental's
         # linelog file, or is supposed to if it doesn't.
-        self.assertEqual(enc, (b'\x00\x00\x01\x90\x00\x00\x00\x06'
-                               b'\x00\x00\x00\xa4\x00\x00\x00*'
-                               b'\x00\x00\x00\x00\x00\x00\x00+'
-                               b'\x00\x00\x00\x00\x00\x00\x00\x00'
-                               b'\x00\x00\x00\xb1\x00\x00\x00-'
-                               b'\x00\x00\x00\xba\x00\x00\x00/'))
+        self.assertEqual(
+            enc,
+            (
+                b'\x00\x00\x01\x90\x00\x00\x00\x06'
+                b'\x00\x00\x00\xa4\x00\x00\x00*'
+                b'\x00\x00\x00\x00\x00\x00\x00+'
+                b'\x00\x00\x00\x00\x00\x00\x00\x00'
+                b'\x00\x00\x00\xb1\x00\x00\x00-'
+                b'\x00\x00\x00\xba\x00\x00\x00/'
+            ),
+        )
 
     def testsimpleedits(self):
         ll = linelog.linelog()
         # Initial revision: add lines 0, 1, and 2
         ll.replacelines(1, 0, 0, 0, 3)
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(1)],
-                         [(1, 0),
-                          (1, 1),
-                          (1, 2),
-                         ])
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in ll.annotate(1)],
+            [(1, 0), (1, 1), (1, 2),],
+        )
         # Replace line 1 with a new line
         ll.replacelines(2, 1, 2, 1, 2)
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(2)],
-                         [(1, 0),
-                          (2, 1),
-                          (1, 2),
-                         ])
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in ll.annotate(2)],
+            [(1, 0), (2, 1), (1, 2),],
+        )
         # delete a line out of 2
         ll.replacelines(3, 1, 2, 0, 0)
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(3)],
-                         [(1, 0),
-                          (1, 2),
-                         ])
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in ll.annotate(3)], [(1, 0), (1, 2),]
+        )
         # annotation of 1 is unchanged
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(1)],
-                         [(1, 0),
-                          (1, 1),
-                          (1, 2),
-                         ])
-        ll.annotate(3) # set internal state to revision 3
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in ll.annotate(1)],
+            [(1, 0), (1, 1), (1, 2),],
+        )
+        ll.annotate(3)  # set internal state to revision 3
         start = ll.getoffset(0)
         end = ll.getoffset(1)
-        self.assertEqual(ll.getalllines(start, end), [
-            (1, 0),
-            (2, 1),
-            (1, 1),
-        ])
-        self.assertEqual(ll.getalllines(), [
-            (1, 0),
-            (2, 1),
-            (1, 1),
-            (1, 2),
-        ])
+        self.assertEqual(ll.getalllines(start, end), [(1, 0), (2, 1), (1, 1),])
+        self.assertEqual(ll.getalllines(), [(1, 0), (2, 1), (1, 1), (1, 2),])
 
     def testparseclinelogfile(self):
         # This data is what the replacements in testsimpleedits
         # produce when fed to the original linelog.c implementation.
-        data = (b'\x00\x00\x00\x0c\x00\x00\x00\x0f'
-                b'\x00\x00\x00\x00\x00\x00\x00\x02'
-                b'\x00\x00\x00\x05\x00\x00\x00\x06'
-                b'\x00\x00\x00\x06\x00\x00\x00\x00'
-                b'\x00\x00\x00\x00\x00\x00\x00\x07'
-                b'\x00\x00\x00\x06\x00\x00\x00\x02'
-                b'\x00\x00\x00\x00\x00\x00\x00\x00'
-                b'\x00\x00\x00\t\x00\x00\x00\t'
-                b'\x00\x00\x00\x00\x00\x00\x00\x0c'
-                b'\x00\x00\x00\x08\x00\x00\x00\x05'
-                b'\x00\x00\x00\x06\x00\x00\x00\x01'
-                b'\x00\x00\x00\x00\x00\x00\x00\x05'
-                b'\x00\x00\x00\x0c\x00\x00\x00\x05'
-                b'\x00\x00\x00\n\x00\x00\x00\x01'
-                b'\x00\x00\x00\x00\x00\x00\x00\t')
+        data = (
+            b'\x00\x00\x00\x0c\x00\x00\x00\x0f'
+            b'\x00\x00\x00\x00\x00\x00\x00\x02'
+            b'\x00\x00\x00\x05\x00\x00\x00\x06'
+            b'\x00\x00\x00\x06\x00\x00\x00\x00'
+            b'\x00\x00\x00\x00\x00\x00\x00\x07'
+            b'\x00\x00\x00\x06\x00\x00\x00\x02'
+            b'\x00\x00\x00\x00\x00\x00\x00\x00'
+            b'\x00\x00\x00\t\x00\x00\x00\t'
+            b'\x00\x00\x00\x00\x00\x00\x00\x0c'
+            b'\x00\x00\x00\x08\x00\x00\x00\x05'
+            b'\x00\x00\x00\x06\x00\x00\x00\x01'
+            b'\x00\x00\x00\x00\x00\x00\x00\x05'
+            b'\x00\x00\x00\x0c\x00\x00\x00\x05'
+            b'\x00\x00\x00\n\x00\x00\x00\x01'
+            b'\x00\x00\x00\x00\x00\x00\x00\t'
+        )
         llc = linelog.linelog.fromdata(data)
-        self.assertEqual([(l.rev, l.linenum) for l in llc.annotate(1)],
-                         [(1, 0),
-                          (1, 1),
-                          (1, 2),
-                         ])
-        self.assertEqual([(l.rev, l.linenum) for l in llc.annotate(2)],
-                         [(1, 0),
-                          (2, 1),
-                          (1, 2),
-                         ])
-        self.assertEqual([(l.rev, l.linenum) for l in llc.annotate(3)],
-                         [(1, 0),
-                          (1, 2),
-                         ])
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in llc.annotate(1)],
+            [(1, 0), (1, 1), (1, 2),],
+        )
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in llc.annotate(2)],
+            [(1, 0), (2, 1), (1, 2),],
+        )
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in llc.annotate(3)], [(1, 0), (1, 2),]
+        )
         # Check we emit the same bytecode.
         ll = linelog.linelog()
         # Initial revision: add lines 0, 1, and 2
@@ -137,9 +133,15 @@
         ll.replacelines(2, 1, 2, 1, 2)
         # delete a line out of 2
         ll.replacelines(3, 1, 2, 0, 0)
-        diff = '\n   ' + '\n   '.join(difflib.unified_diff(
-            ll.debugstr().splitlines(), llc.debugstr().splitlines(),
-            'python', 'c', lineterm=''))
+        diff = '\n   ' + '\n   '.join(
+            difflib.unified_diff(
+                ll.debugstr().splitlines(),
+                llc.debugstr().splitlines(),
+                'python',
+                'c',
+                lineterm='',
+            )
+        )
         self.assertEqual(ll._program, llc._program, 'Program mismatch: ' + diff)
         # Done as a secondary step so we get a better result if the
         # program is where the mismatch is.
@@ -150,13 +152,12 @@
         ll = linelog.linelog()
         ll.replacelines(3, 0, 0, 0, 2)
         ll.replacelines(4, 0, 2, 0, 0)
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(4)],
-                         [])
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(3)],
-                         [(3, 0), (3, 1)])
+        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(4)], [])
+        self.assertEqual(
+            [(l.rev, l.linenum) for l in ll.annotate(3)], [(3, 0), (3, 1)]
+        )
         # rev 2 is empty because contents were only ever introduced in rev 3
-        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(2)],
-                         [])
+        self.assertEqual([(l.rev, l.linenum) for l in ll.annotate(2)], [])
 
     def testrandomedits(self):
         # Inspired by original linelog tests.
@@ -165,7 +166,8 @@
         ll = linelog.linelog()
         # Populate linelog
         for lines, rev, a1, a2, b1, b2, blines, usevec in _genedits(
-                seed, numrevs):
+            seed, numrevs
+        ):
             if usevec:
                 ll.replacelines_vec(rev, a1, a2, blines)
             else:
@@ -174,7 +176,8 @@
             self.assertEqual(ll.annotateresult, lines)
         # Verify we can get back these states by annotating each rev
         for lines, rev, a1, a2, b1, b2, blines, usevec in _genedits(
-                seed, numrevs):
+            seed, numrevs
+        ):
             ar = ll.annotate(rev)
             self.assertEqual([(l.rev, l.linenum) for l in ar], lines)
 
@@ -187,6 +190,8 @@
             # should not be an infinite loop and raise
             ll.annotate(1)
 
+
 if __name__ == '__main__':
     import silenttestrunner
+
     silenttestrunner.main(__name__)