test-storage.py
73 lines
| 2.4 KiB
| text/x-python
|
PythonLexer
/ tests / test-storage.py
Gregory Szorc
|
r39808 | # This test verifies the conformance of various classes to various | ||
# storage interfaces. | ||||
from __future__ import absolute_import | ||||
import silenttestrunner | ||||
from mercurial import ( | ||||
Gregory Szorc
|
r40087 | error, | ||
Gregory Szorc
|
r39808 | filelog, | ||
Gregory Szorc
|
r40087 | revlog, | ||
Gregory Szorc
|
r39808 | transaction, | ||
ui as uimod, | ||||
vfs as vfsmod, | ||||
) | ||||
from mercurial.testing import ( | ||||
storage as storagetesting, | ||||
) | ||||
STATE = { | ||||
'lastindex': 0, | ||||
'ui': uimod.ui(), | ||||
'vfs': vfsmod.vfs(b'.', realpath=True), | ||||
} | ||||
def makefilefn(self): | ||||
"""Factory for filelog instances.""" | ||||
Gregory Szorc
|
r39989 | fl = filelog.filelog(STATE['vfs'], b'filelog-%d' % STATE['lastindex']) | ||
Gregory Szorc
|
r39808 | STATE['lastindex'] += 1 | ||
return fl | ||||
def maketransaction(self): | ||||
Gregory Szorc
|
r40092 | vfsmap = {'plain': STATE['vfs'], 'store': STATE['vfs']} | ||
Gregory Szorc
|
r39808 | |||
return transaction.transaction(STATE['ui'].warn, STATE['vfs'], vfsmap, | ||||
Gregory Szorc
|
r39989 | b'journal', b'undo') | ||
Gregory Szorc
|
r39808 | |||
Gregory Szorc
|
r40087 | def addrawrevision(self, fl, tr, node, p1, p2, linkrev, rawtext=None, | ||
delta=None, censored=False, ellipsis=False, extstored=False): | ||||
flags = 0 | ||||
if censored: | ||||
flags |= revlog.REVIDX_ISCENSORED | ||||
if ellipsis: | ||||
flags |= revlog.REVIDX_ELLIPSIS | ||||
if extstored: | ||||
flags |= revlog.REVIDX_EXTSTORED | ||||
if rawtext is not None: | ||||
fl._revlog.addrawrevision(rawtext, tr, linkrev, p1, p2, node, flags) | ||||
elif delta is not None: | ||||
raise error.Abort('support for storing raw deltas not yet supported') | ||||
else: | ||||
raise error.Abort('must supply rawtext or delta arguments') | ||||
# We may insert bad data. Clear caches to prevent e.g. cache hits to | ||||
# bypass hash verification. | ||||
fl._revlog.clearcaches() | ||||
Gregory Szorc
|
r39808 | # Assigning module-level attributes that inherit from unittest.TestCase | ||
# is all that is needed to register tests. | ||||
filelogindextests = storagetesting.makeifileindextests(makefilefn, | ||||
Gregory Szorc
|
r40087 | maketransaction, | ||
addrawrevision) | ||||
Gregory Szorc
|
r39808 | filelogdatatests = storagetesting.makeifiledatatests(makefilefn, | ||
Gregory Szorc
|
r40087 | maketransaction, | ||
addrawrevision) | ||||
Gregory Szorc
|
r39808 | filelogmutationtests = storagetesting.makeifilemutationtests(makefilefn, | ||
Gregory Szorc
|
r40087 | maketransaction, | ||
addrawrevision) | ||||
Gregory Szorc
|
r39808 | |||
if __name__ == '__main__': | ||||
silenttestrunner.main(__name__) | ||||