Skip to content
Snippets Groups Projects
Commit 03e769278ef3 authored by Pierre-Yves David's avatar Pierre-Yves David :octopus:
Browse files

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
parent 559ac8411f12
No related branches found
No related tags found
No related merge requests found
......@@ -12,6 +12,7 @@
from mercurial import (
extensions,
node,
revlog,
)
......@@ -32,5 +33,17 @@
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)
......@@ -35,2 +48,3 @@
def extsetup(ui):
extensions.wrapfunction(revlog.revlog, 'addrevision', wrapaddrevision)
extensions.wrapfunction(revlog.revlog, 'revision', wraprevision)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment