##// END OF EJS Templates
errors: name arguments to UnknownCommand constructor...
errors: name arguments to UnknownCommand constructor Differential Revision: https://phab.mercurial-scm.org/D9166

File last commit:

r43346:2372284d default
r46272:bb1a988e default
Show More
test-storage.py
168 lines | 3.8 KiB | text/x-python | PythonLexer
Gregory Szorc
testing: add interface unit tests for file storage...
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
testing: add file storage integration for bad hashes and censoring...
r40087 error,
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 filelog,
Gregory Szorc
testing: add file storage integration for bad hashes and censoring...
r40087 revlog,
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 transaction,
ui as uimod,
vfs as vfsmod,
)
Augie Fackler
formatting: blacken the codebase...
r43346 from mercurial.testing import storage as storagetesting
Gregory Szorc
testing: add interface unit tests for file storage...
r39808
Augie Fackler
tests: don't emit false failures when sqlite3 is missing...
r40399 try:
Augie Fackler
formatting: blacken the codebase...
r43346 from hgext import sqlitestore
Augie Fackler
tests: don't emit false failures when sqlite3 is missing...
r40399 except ImportError:
sqlitestore = None
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362
try:
Yuya Nishihara
tests: require SQLite 3.8.3+ as sqlitestore relies on "WITH" clause...
r40492 import sqlite3
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
tests: require SQLite 3.8.3+ as sqlitestore relies on "WITH" clause...
r40492 if sqlite3.sqlite_version_info < (3, 8, 3):
# WITH clause not supported
sqlitestore = None
except ImportError:
pass
try:
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362 from mercurial import zstd
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362 zstd.__version__
except ImportError:
zstd = None
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 STATE = {
'lastindex': 0,
'ui': uimod.ui(),
'vfs': vfsmod.vfs(b'.', realpath=True),
}
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 def makefilefn(self):
"""Factory for filelog instances."""
Gregory Szorc
py3: byteify test-storage.py...
r39989 fl = filelog.filelog(STATE['vfs'], b'filelog-%d' % STATE['lastindex'])
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 STATE['lastindex'] += 1
return fl
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 def maketransaction(self):
Gregory Szorc
tests: use byte literals in test-storage.py...
r40356 vfsmap = {b'plain': STATE['vfs'], b'store': STATE['vfs']}
Gregory Szorc
testing: add interface unit tests for file storage...
r39808
Augie Fackler
formatting: blacken the codebase...
r43346 return transaction.transaction(
STATE['ui'].warn, STATE['vfs'], vfsmap, b'journal', b'undo'
)
Gregory Szorc
testing: add interface unit tests for file storage...
r39808
Augie Fackler
formatting: blacken the codebase...
r43346 def addrawrevision(
self,
fl,
tr,
node,
p1,
p2,
linkrev,
rawtext=None,
delta=None,
censored=False,
ellipsis=False,
extstored=False,
):
Gregory Szorc
testing: add file storage integration for bad hashes and censoring...
r40087 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:
Augie Fackler
formatting: blacken the codebase...
r43346 fl._revlog.addrawrevision(
rawtext, tr, linkrev, p1, p2, node, flags, cachedelta=delta
)
Gregory Szorc
testing: add file storage integration for bad hashes and censoring...
r40087 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()
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 # Assigning module-level attributes that inherit from unittest.TestCase
# is all that is needed to register tests.
Augie Fackler
formatting: blacken the codebase...
r43346 filelogindextests = storagetesting.makeifileindextests(
makefilefn, maketransaction, addrawrevision
)
filelogdatatests = storagetesting.makeifiledatatests(
makefilefn, maketransaction, addrawrevision
)
filelogmutationtests = storagetesting.makeifilemutationtests(
makefilefn, maketransaction, addrawrevision
)
Gregory Szorc
testing: add interface unit tests for file storage...
r39808
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362 def makesqlitefile(self):
path = STATE['vfs'].join(b'db-%d.db' % STATE['lastindex'])
STATE['lastindex'] += 1
db = sqlitestore.makedb(path)
compression = b'zstd' if zstd else b'zlib'
return sqlitestore.sqlitefilestore(db, b'dummy-path', compression)
Augie Fackler
formatting: blacken the codebase...
r43346
def addrawrevisionsqlite(
self,
fl,
tr,
node,
p1,
p2,
linkrev,
rawtext=None,
delta=None,
censored=False,
ellipsis=False,
extstored=False,
):
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362 flags = 0
if censored:
flags |= sqlitestore.FLAG_CENSORED
if ellipsis | extstored:
Augie Fackler
formatting: blacken the codebase...
r43346 raise error.Abort(
b'support for ellipsis and extstored flags not ' b'supported'
)
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362
if rawtext is not None:
fl._addrawrevision(node, rawtext, tr, linkrev, p1, p2, flags=flags)
elif delta is not None:
Augie Fackler
formatting: blacken the codebase...
r43346 fl._addrawrevision(
node, rawtext, tr, linkrev, p1, p2, storedelta=delta, flags=flags
)
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362 else:
raise error.Abort(b'must supply rawtext or delta arguments')
Augie Fackler
formatting: blacken the codebase...
r43346
Augie Fackler
tests: don't emit false failures when sqlite3 is missing...
r40399 if sqlitestore is not None:
sqlitefileindextests = storagetesting.makeifileindextests(
Augie Fackler
formatting: blacken the codebase...
r43346 makesqlitefile, maketransaction, addrawrevisionsqlite
)
Augie Fackler
tests: don't emit false failures when sqlite3 is missing...
r40399 sqlitefiledatatests = storagetesting.makeifiledatatests(
Augie Fackler
formatting: blacken the codebase...
r43346 makesqlitefile, maketransaction, addrawrevisionsqlite
)
Augie Fackler
tests: don't emit false failures when sqlite3 is missing...
r40399 sqlitefilemutationtests = storagetesting.makeifilemutationtests(
Augie Fackler
formatting: blacken the codebase...
r43346 makesqlitefile, maketransaction, addrawrevisionsqlite
)
Gregory Szorc
sqlitestore: file storage backend using SQLite...
r40362
Gregory Szorc
testing: add interface unit tests for file storage...
r39808 if __name__ == '__main__':
silenttestrunner.main(__name__)