Mercurial > hg
diff tests/testlib/ext-sidedata.py @ 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 | ba4072c0a911 |
children | 2372284d9457 |
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)