equal
deleted
inserted
replaced
1 # ext-sidedata.py - small extension to test the sidedata logic |
1 # ext-sidedata.py - small extension to test the sidedata logic |
2 # |
2 # |
3 # Copyright 2019 Pierre-Yves David <pierre-yves.david@octobus.net) |
3 # Copyright 2019 Pierre-Yves David <pierre-yves.david@octobus.net> |
4 # |
4 # |
5 # This software may be used and distributed according to the terms of the |
5 # This software may be used and distributed according to the terms of the |
6 # GNU General Public License version 2 or any later version. |
6 # GNU General Public License version 2 or any later version. |
7 |
7 |
8 from __future__ import absolute_import |
8 from __future__ import absolute_import |
45 if getattr(self, 'sidedatanocheck', False): |
45 if getattr(self, 'sidedatanocheck', False): |
46 return text, sd |
46 return text, sd |
47 if self.version & 0xFFFF != 2: |
47 if self.version & 0xFFFF != 2: |
48 return text, sd |
48 return text, sd |
49 if nodeorrev != nullrev and nodeorrev != nullid: |
49 if nodeorrev != nullrev and nodeorrev != nullid: |
50 if len(text) != struct.unpack('>I', sd[sidedata.SD_TEST1])[0]: |
50 cat1 = sd.get(sidedata.SD_TEST1) |
|
51 if cat1 is not None and len(text) != struct.unpack('>I', cat1)[0]: |
51 raise RuntimeError('text size mismatch') |
52 raise RuntimeError('text size mismatch') |
52 expected = sd[sidedata.SD_TEST2] |
53 expected = sd.get(sidedata.SD_TEST2) |
53 got = hashlib.sha256(text).digest() |
54 got = hashlib.sha256(text).digest() |
54 if got != expected: |
55 if expected is not None and got != expected: |
55 raise RuntimeError('sha256 mismatch') |
56 raise RuntimeError('sha256 mismatch') |
56 return text, sd |
57 return text, sd |
57 |
58 |
58 |
59 |
59 def wrapgetsidedatacompanion(orig, srcrepo, dstrepo): |
60 def wrapgetsidedatacompanion(orig, srcrepo, dstrepo): |
84 extensions.wrapfunction(revlog.revlog, 'addrevision', wrapaddrevision) |
85 extensions.wrapfunction(revlog.revlog, 'addrevision', wrapaddrevision) |
85 extensions.wrapfunction(revlog.revlog, '_revisiondata', wrap_revisiondata) |
86 extensions.wrapfunction(revlog.revlog, '_revisiondata', wrap_revisiondata) |
86 extensions.wrapfunction( |
87 extensions.wrapfunction( |
87 upgrade_engine, 'getsidedatacompanion', wrapgetsidedatacompanion |
88 upgrade_engine, 'getsidedatacompanion', wrapgetsidedatacompanion |
88 ) |
89 ) |
|
90 |
|
91 |
|
92 def reposetup(ui, repo): |
|
93 # We don't register sidedata computers because we don't care within these |
|
94 # tests |
|
95 repo.register_wanted_sidedata(sidedata.SD_TEST1) |
|
96 repo.register_wanted_sidedata(sidedata.SD_TEST2) |