Mercurial > hg
changeset 43042:03e769278ef3
sidedata: check that the sidedata safely roundtrip
We actually use the data we stored during the test. It is a way to make sure
their content is not corrupted.
Differential Revision: https://phab.mercurial-scm.org/D6898
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 10 Sep 2019 00:30:53 +0200 |
parents | 559ac8411f12 |
children | e370f9e4bfad |
files | tests/testlib/ext-sidedata.py |
diffstat | 1 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/testlib/ext-sidedata.py Tue Sep 10 00:15:47 2019 +0200 +++ b/tests/testlib/ext-sidedata.py Tue Sep 10 00:30:53 2019 +0200 @@ -12,6 +12,7 @@ from mercurial import ( extensions, + node, revlog, ) @@ -32,5 +33,18 @@ sd[sidedata.SD_TEST2] = struct.pack('>32s', sha256) return orig(self, text, transaction, link, p1, p2, *args, **kwargs) +def wraprevision(orig, self, nodeorrev, *args, **kwargs): + text = orig(self, nodeorrev, *args, **kwargs) + if nodeorrev != node.nullrev and nodeorrev != node.nullid: + sd = self.sidedata(nodeorrev) + if len(text) != struct.unpack('>I', sd[sidedata.SD_TEST1])[0]: + raise RuntimeError('text size mismatch') + expected = sd[sidedata.SD_TEST2] + got = hashlib.sha256(text).digest() + if got != expected: + raise RuntimeError('sha256 mismatch') + return text + def extsetup(ui): extensions.wrapfunction(revlog.revlog, 'addrevision', wrapaddrevision) + extensions.wrapfunction(revlog.revlog, 'revision', wraprevision)