tests/test-storage.py
changeset 40326 fed697fa1734
parent 40323 2c0aa02ecd5a
child 40363 c3ad9ef0876c
--- a/tests/test-storage.py	Tue Oct 16 15:36:19 2018 +0200
+++ b/tests/test-storage.py	Tue Oct 09 08:50:13 2018 -0700
@@ -17,6 +17,16 @@
     storage as storagetesting,
 )
 
+from hgext import (
+    sqlitestore,
+)
+
+try:
+    from mercurial import zstd
+    zstd.__version__
+except ImportError:
+    zstd = None
+
 STATE = {
     'lastindex': 0,
     'ui': uimod.ui(),
@@ -70,5 +80,42 @@
                                                              maketransaction,
                                                              addrawrevision)
 
+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)
+
+def addrawrevisionsqlite(self, fl, tr, node, p1, p2, linkrev, rawtext=None,
+                         delta=None, censored=False, ellipsis=False,
+                         extstored=False):
+    flags = 0
+
+    if censored:
+        flags |= sqlitestore.FLAG_CENSORED
+
+    if ellipsis | extstored:
+        raise error.Abort(b'support for ellipsis and extstored flags not '
+                          b'supported')
+
+    if rawtext is not None:
+        fl._addrawrevision(node, rawtext, tr, linkrev, p1, p2, flags=flags)
+    elif delta is not None:
+        fl._addrawrevision(node, rawtext, tr, linkrev, p1, p2,
+                           storedelta=delta, flags=flags)
+    else:
+        raise error.Abort(b'must supply rawtext or delta arguments')
+
+sqlitefileindextests = storagetesting.makeifileindextests(
+    makesqlitefile, maketransaction, addrawrevisionsqlite)
+sqlitefiledatatests = storagetesting.makeifiledatatests(
+    makesqlitefile, maketransaction, addrawrevisionsqlite)
+sqlitefilemutationtests = storagetesting.makeifilemutationtests(
+    makesqlitefile, maketransaction, addrawrevisionsqlite)
+
 if __name__ == '__main__':
     silenttestrunner.main(__name__)