D6898: sidedata: check that the sidedata safely roundtrip
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Sep 27 16:18:18 UTC 2019
marmoute created this revision.
marmoute added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
We actually use the data we stored during the test. It is a way to make sure
their content is not corrupted.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6898
AFFECTED FILES
tests/testlib/ext-sidedata.py
CHANGE DETAILS
diff --git a/tests/testlib/ext-sidedata.py b/tests/testlib/ext-sidedata.py
--- a/tests/testlib/ext-sidedata.py
+++ b/tests/testlib/ext-sidedata.py
@@ -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)
To: marmoute, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list