D7652: test: extract some generic data and utility from test-rust-ancestor.py
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Dec 13 20:11:39 UTC 2019
marmoute created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
We will reuse this for more tests related to revlog index. In pratice this
series of changesets add an index implementation provided from Rust and we want
to be able to test it.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D7652
AFFECTED FILES
mercurial/testing/revlog.py
tests/test-rust-ancestor.py
CHANGE DETAILS
diff --git a/tests/test-rust-ancestor.py b/tests/test-rust-ancestor.py
--- a/tests/test-rust-ancestor.py
+++ b/tests/test-rust-ancestor.py
@@ -7,6 +7,8 @@
node,
)
+from mercurial.testing import revlog as revlogtesting
+
try:
from mercurial import rustext
@@ -27,34 +29,16 @@
except ImportError:
cparsers = None
-# picked from test-parse-index2, copied rather than imported
-# so that it stays stable even if test-parse-index2 changes or disappears.
-data_non_inlined = (
- b'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01D\x19'
- b'\x00\x07e\x12\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff'
- b'\xff\xff\xff\xff\xd1\xf4\xbb\xb0\xbe\xfc\x13\xbd\x8c\xd3\x9d'
- b'\x0f\xcd\xd9;\x8c\x07\x8cJ/\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- b'\x00\x00\x00\x00\x00\x00\x01D\x19\x00\x00\x00\x00\x00\xdf\x00'
- b'\x00\x01q\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff'
- b'\xff\xff\xff\xc1\x12\xb9\x04\x96\xa4Z1t\x91\xdfsJ\x90\xf0\x9bh'
- b'\x07l&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- b'\x00\x01D\xf8\x00\x00\x00\x00\x01\x1b\x00\x00\x01\xb8\x00\x00'
- b'\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\x02\n'
- b'\x0e\xc6&\xa1\x92\xae6\x0b\x02i\xfe-\xe5\xbao\x05\xd1\xe7\x00'
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01F'
- b'\x13\x00\x00\x00\x00\x01\xec\x00\x00\x03\x06\x00\x00\x00\x01'
- b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1'
- b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00'
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
-)
-
@unittest.skipIf(
- rustext is None or cparsers is None,
+ rustext is None, "rustext module ancestor relies on is not available",
+)
+ at unittest.skipIf(
+ rustext is None,
"rustext or the C Extension parsers module "
"ancestor relies on is not available",
)
-class rustancestorstest(unittest.TestCase):
+class rustancestorstest(revlogtesting.RevlogBasedTestBase):
"""Test the correctness of binding to Rust code.
This test is merely for the binding to Rust itself: extraction of
@@ -67,9 +51,6 @@
Algorithmic correctness is asserted by the Rust unit tests.
"""
- def parseindex(self):
- return cparsers.parse_index2(data_non_inlined, False)[0]
-
def testiteratorrevlist(self):
idx = self.parseindex()
# checking test assumption about the index binary data:
@@ -150,7 +131,9 @@
def testgrapherror(self):
data = (
- data_non_inlined[: 64 + 27] + b'\xf2' + data_non_inlined[64 + 28 :]
+ revlogtesting.data_non_inlined[: 64 + 27]
+ + b'\xf2'
+ + revlogtesting.data_non_inlined[64 + 28 :]
)
idx = cparsers.parse_index2(data, False)[0]
with self.assertRaises(rustext.GraphError) as arc:
diff --git a/mercurial/testing/revlog.py b/mercurial/testing/revlog.py
new file mode 100644
--- /dev/null
+++ b/mercurial/testing/revlog.py
@@ -0,0 +1,38 @@
+from __future__ import absolute_import
+import unittest
+
+# picked from test-parse-index2, copied rather than imported
+# so that it stays stable even if test-parse-index2 changes or disappears.
+data_non_inlined = (
+ b'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01D\x19'
+ b'\x00\x07e\x12\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff'
+ b'\xff\xff\xff\xff\xd1\xf4\xbb\xb0\xbe\xfc\x13\xbd\x8c\xd3\x9d'
+ b'\x0f\xcd\xd9;\x8c\x07\x8cJ/\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x00\x00\x00\x00\x00\x01D\x19\x00\x00\x00\x00\x00\xdf\x00'
+ b'\x00\x01q\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff'
+ b'\xff\xff\xff\xc1\x12\xb9\x04\x96\xa4Z1t\x91\xdfsJ\x90\xf0\x9bh'
+ b'\x07l&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x01D\xf8\x00\x00\x00\x00\x01\x1b\x00\x00\x01\xb8\x00\x00'
+ b'\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\x02\n'
+ b'\x0e\xc6&\xa1\x92\xae6\x0b\x02i\xfe-\xe5\xbao\x05\xd1\xe7\x00'
+ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01F'
+ b'\x13\x00\x00\x00\x00\x01\xec\x00\x00\x03\x06\x00\x00\x00\x01'
+ b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1'
+ b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00'
+ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+)
+
+
+try:
+ from ..cext import parsers as cparsers
+except ImportError:
+ cparsers = None
+
+
+ at unittest.skipIf(
+ cparsers is None,
+ "The C Extension parsers module tests relies on is not available",
+)
+class RevlogBasedTestBase(unittest.TestCase):
+ def parseindex(self):
+ return cparsers.parse_index2(data_non_inlined, False)[0]
To: marmoute, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list