##// END OF EJS Templates
tests: use pattern matching to mask `ECONNREFUSED` messages...
tests: use pattern matching to mask `ECONNREFUSED` messages The second and third one of these in `test-http-proxy.t` was failing on Windows. The others were found by grep and by failed tests when output was matched and an attempt was made to emit the mask pattern. The first clonebundles failure on Windows emitted: error fetching bundle: [WinError 10061] $ECONNREFUSED$ We should probably stringify that better to get rid of the "[WinError 10061]" part.

File last commit:

r52123:f9a52a96 default
r52835:73a43fe3 default
Show More
test-storage.py
178 lines | 4.0 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.
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:
Raphaël Gomès
tests: ignore test-storage when using Rust...
r52123 from mercurial import rustext
rustext.__name__
# Does not pass with pure Rust index
import sys
sys.exit(80)
except ImportError:
pass
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__)