diff tests/test-rust-ancestor.py @ 43944:8a8305f557d0

test: extract some generic data and utility from test-rust-ancestor.py 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. Differential Revision: https://phab.mercurial-scm.org/D7652
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 11 Dec 2019 18:40:04 +0100
parents 2372284d9457
children 59fa3890d40a
line wrap: on
line diff
--- a/tests/test-rust-ancestor.py	Tue Dec 17 23:33:35 2019 -0500
+++ b/tests/test-rust-ancestor.py	Wed Dec 11 18:40:04 2019 +0100
@@ -7,6 +7,8 @@
     node,
 )
 
+from mercurial.testing import revlog as revlogtesting
+
 try:
     from mercurial import rustext
 
@@ -27,34 +29,18 @@
 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 or the C Extension parsers module "
-    "ancestor relies on is not available",
+    rustext is None,
+    'The Rust version of the "ancestor" module is not available. It is needed'
+    ' for this test.',
 )
-class rustancestorstest(unittest.TestCase):
+@unittest.skipIf(
+    rustext is None,
+    'The Rust or C version of the "parsers" module, which the "ancestor" module'
+    ' relies on, is not available.',
+)
+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 +53,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 +133,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: