testing: switch to inserting deltas
As the comment in the test specifies, this was relying on storage backend
implementation details. We switch to inserting a raw delta, skipping the
regular insert path to ensure we have the desired outcome. This required
implementing support for handling deltas in the revlog testing code.
Differential Revision: https://phab.mercurial-scm.org/D5116
--- a/mercurial/testing/storage.py Tue Oct 16 15:24:06 2018 +0200
+++ b/mercurial/testing/storage.py Tue Oct 16 16:24:46 2018 +0200
@@ -952,13 +952,12 @@
with self.assertRaises(error.StorageError):
f.read(node1)
- diff = mdiff.textdiff(fulltext1, fulltext2)
node2 = storageutil.hashrevisionsha1(fulltext2, node1, nullid)
- deltas = [(node2, node1, nullid, b'\x01' * 20, node1, diff, 0)]
- # This /might/ fail on some backends.
with self._maketransactionfn() as tr:
- f.addgroup(deltas, lambda x: 0, tr)
+ delta = mdiff.textdiff(fulltext1, fulltext2)
+ self._addrawrevisionfn(f, tr, node2, node1, nullid,
+ 2, delta=(1, delta))
self.assertEqual(len(f), 3)
--- a/tests/test-storage.py Tue Oct 16 15:24:06 2018 +0200
+++ b/tests/test-storage.py Tue Oct 16 16:24:46 2018 +0200
@@ -49,7 +49,8 @@
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')
+ fl._revlog.addrawrevision(rawtext, tr, linkrev, p1, p2, node, flags,
+ cachedelta=delta)
else:
raise error.Abort('must supply rawtext or delta arguments')