Mercurial > public > mercurial-scm > hg
diff tests/test-linelog.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 876494fd967d |
children | e52a9c85a7a8 |
line wrap: on
line diff
--- 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__)