tests/test-storage.py
changeset 40051 cdf61ab1f54c
parent 39953 a3a9b93bff80
child 40056 324b4b10351e
--- a/tests/test-storage.py	Wed Oct 03 10:03:41 2018 -0700
+++ b/tests/test-storage.py	Wed Oct 03 10:56:48 2018 -0700
@@ -5,7 +5,9 @@
 import silenttestrunner
 
 from mercurial import (
+    error,
     filelog,
+    revlog,
     transaction,
     ui as uimod,
     vfs as vfsmod,
@@ -33,14 +35,39 @@
     return transaction.transaction(STATE['ui'].warn, STATE['vfs'], vfsmap,
                                    b'journal', b'undo')
 
+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()
+
 # Assigning module-level attributes that inherit from unittest.TestCase
 # is all that is needed to register tests.
 filelogindextests = storagetesting.makeifileindextests(makefilefn,
-                                                       maketransaction)
+                                                       maketransaction,
+                                                       addrawrevision)
 filelogdatatests = storagetesting.makeifiledatatests(makefilefn,
-                                                     maketransaction)
+                                                     maketransaction,
+                                                     addrawrevision)
 filelogmutationtests = storagetesting.makeifilemutationtests(makefilefn,
-                                                             maketransaction)
+                                                             maketransaction,
+                                                             addrawrevision)
 
 if __name__ == '__main__':
     silenttestrunner.main(__name__)