Mercurial > public > mercurial-scm > hg-stable
diff tests/test-revlog-raw.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 | f4caf910669e |
children | 9d2b2df2c2ba |
line wrap: on
line diff
--- a/tests/test-revlog-raw.py Sat Oct 05 10:29:34 2019 -0400 +++ b/tests/test-revlog-raw.py Sun Oct 06 09:45:02 2019 -0400 @@ -23,18 +23,23 @@ tvfs = vfs.vfs(encoding.environ.get(b'TESTTMP', b'/tmp')) # Enable generaldelta otherwise revlog won't use delta as expected by the test -tvfs.options = {b'generaldelta': True, b'revlogv1': True, - b'sparse-revlog': True} +tvfs.options = { + b'generaldelta': True, + b'revlogv1': True, + b'sparse-revlog': True, +} # The test wants to control whether to use delta explicitly, based on # "storedeltachains". revlog.revlog._isgooddeltainfo = lambda self, d, textlen: self._storedeltachains + def abort(msg): print('abort: %s' % msg) # Return 0 so run-tests.py could compare the output. sys.exit() + # Register a revlog processor for flag EXTSTORED. # # It simply prepends a fixed header, and replaces '1' to 'i'. So it has @@ -42,37 +47,45 @@ # deltas. _extheader = b'E\n' + def readprocessor(self, rawtext): # True: the returned text could be used to verify hash - text = rawtext[len(_extheader):].replace(b'i', b'1') + text = rawtext[len(_extheader) :].replace(b'i', b'1') return text, True, {} + def writeprocessor(self, text, sidedata): # False: the returned rawtext shouldn't be used to verify hash rawtext = _extheader + text.replace(b'1', b'i') return rawtext, False + def rawprocessor(self, rawtext): # False: do not verify hash. Only the content returned by "readprocessor" # can be used to verify hash. return False -flagutil.addflagprocessor(revlog.REVIDX_EXTSTORED, - (readprocessor, writeprocessor, rawprocessor)) + +flagutil.addflagprocessor( + revlog.REVIDX_EXTSTORED, (readprocessor, writeprocessor, rawprocessor) +) # Utilities about reading and appending revlog + def newtransaction(): # A transaction is required to write revlogs report = lambda msg: None return transaction.transaction(report, tvfs, {'plain': tvfs}, b'journal') + def newrevlog(name=b'_testrevlog.i', recreate=False): if recreate: tvfs.tryunlink(name) rlog = revlog.revlog(tvfs, name) return rlog + def appendrev(rlog, text, tr, isext=False, isdelta=True): '''Append a revision. If isext is True, set the EXTSTORED flag so flag processor will be used (and rawtext is different from text). If isdelta is @@ -96,6 +109,7 @@ # Restore storedeltachains. It is always True, see revlog.__init__ rlog._storedeltachains = True + def addgroupcopy(rlog, tr, destname=b'_destrevlog.i', optimaldelta=True): '''Copy revlog to destname using revlog.addgroup. Return the copied revlog. @@ -109,6 +123,7 @@ This exercises some revlog.addgroup (and revlog._addrevision(text=None)) code path, which is not covered by "appendrev" alone. ''' + class dummychangegroup(object): @staticmethod def deltachunk(pnode): @@ -124,10 +139,15 @@ deltaparent = min(0, parentrev) if not rlog.candelta(deltaparent, r): deltaparent = -1 - return {b'node': rlog.node(r), b'p1': pnode, b'p2': node.nullid, - b'cs': rlog.node(rlog.linkrev(r)), b'flags': rlog.flags(r), - b'deltabase': rlog.node(deltaparent), - b'delta': rlog.revdiff(deltaparent, r)} + return { + b'node': rlog.node(r), + b'p1': pnode, + b'p2': node.nullid, + b'cs': rlog.node(rlog.linkrev(r)), + b'flags': rlog.flags(r), + b'deltabase': rlog.node(deltaparent), + b'delta': rlog.revdiff(deltaparent, r), + } def deltaiter(self): chain = None @@ -152,6 +172,7 @@ dlog.addgroup(dummydeltas, linkmap, tr) return dlog + def lowlevelcopy(rlog, tr, destname=b'_destrevlog.i'): '''Like addgroupcopy, but use the low level revlog._addrevision directly. @@ -166,9 +187,14 @@ cachedelta = None else: # deltaparent cannot have EXTSTORED flag. - deltaparent = max([-1] + - [p for p in range(r) - if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0]) + deltaparent = max( + [-1] + + [ + p + for p in range(r) + if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0 + ] + ) text = None cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) flags = rlog.flags(r) @@ -177,8 +203,9 @@ ifh = dlog.opener(dlog.indexfile, b'a+') if not dlog._inline: dfh = dlog.opener(dlog.datafile, b'a+') - dlog._addrevision(rlog.node(r), text, tr, r, p1, p2, flags, - cachedelta, ifh, dfh) + dlog._addrevision( + rlog.node(r), text, tr, r, p1, p2, flags, cachedelta, ifh, dfh + ) finally: if dfh is not None: dfh.close() @@ -186,8 +213,10 @@ ifh.close() return dlog + # Utilities to generate revisions for testing + def genbits(n): '''Given a number n, generate (2 ** (n * 2) + 1) numbers in range(2 ** n). i.e. the generated numbers have a width of n bits. @@ -219,10 +248,12 @@ x = y yield x + def gentext(rev): '''Given a revision number, generate dummy text''' return b''.join(b'%d\n' % j for j in range(-1, rev % 5)) + def writecases(rlog, tr): '''Write some revisions interested to the test. @@ -281,8 +312,10 @@ abort('rev %d: isext is ineffective' % rev) return result + # Main test and checking + def checkrevlog(rlog, expected): '''Check if revlog has expected contents. expected is [(text, rawtext)]''' # Test using different access orders. This could expose some issues @@ -299,21 +332,23 @@ else: t = nlog.revision(rev) if t != expected[rev][int(raw)]: - abort('rev %d: corrupted %stext' - % (rev, raw and 'raw' or '')) + abort( + 'rev %d: corrupted %stext' + % (rev, raw and 'raw' or '') + ) + slicingdata = [ - ([0, 1, 2, 3, 55, 56, 58, 59, 60], - [[0, 1], [2], [58], [59, 60]], - 10), - ([0, 1, 2, 3, 55, 56, 58, 59, 60], - [[0, 1], [2], [58], [59, 60]], - 10), - ([-1, 0, 1, 2, 3, 55, 56, 58, 59, 60], - [[-1, 0, 1], [2], [58], [59, 60]], - 10), + ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), + ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), + ( + [-1, 0, 1, 2, 3, 55, 56, 58, 59, 60], + [[-1, 0, 1], [2], [58], [59, 60]], + 10, + ), ] + def slicingtest(rlog): oldmin = rlog._srmingapsize try: @@ -333,9 +368,11 @@ finally: rlog._srmingapsize = oldmin + def md5sum(s): return hashlib.md5(s).digest() + def _maketext(*coord): """create piece of text according to range of integers @@ -348,6 +385,7 @@ pieces.append(b'\n'.join(p)) return b'\n'.join(pieces) + b'\n' + data = [ _maketext((0, 120), (456, 60)), _maketext((0, 120), (345, 60)), @@ -383,13 +421,17 @@ _maketext((0, 120), (60, 60), (618, 30), (398, 40), (158, 10)), ] + def makesnapshot(tr): rl = newrevlog(name=b'_snaprevlog3.i', recreate=True) for i in data: appendrev(rl, i, tr) return rl + snapshots = [-1, 0, 6, 8, 11, 17, 19, 21, 25, 30] + + def issnapshottest(rlog): result = [] if rlog.issnapshot(-1): @@ -402,8 +444,11 @@ print(' expected: %s' % snapshots) print(' got: %s' % result) + snapshotmapall = {0: [6, 8, 11, 17, 19, 25], 8: [21], -1: [0, 30]} snapshotmap15 = {0: [17, 19, 25], 8: [21], -1: [30]} + + def findsnapshottest(rlog): resultall = collections.defaultdict(list) deltas._findsnapshots(rlog, resultall, 0) @@ -420,6 +465,7 @@ print(' expected: %s' % snapshotmap15) print(' got: %s' % result15) + def maintest(): with newtransaction() as tr: rl = newrevlog(recreate=True) @@ -449,6 +495,7 @@ findsnapshottest(rl5) print('findsnapshot test passed') + try: maintest() except Exception as ex: