rust-cpython: testing the bindings from Python
This is easier and more convincing than doing the same tests
from a Rust tests module.
Differential Revision: https://phab.mercurial-scm.org/D5437
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rust-ancestor.py Tue Oct 16 19:58:27 2018 +0200
@@ -0,0 +1,39 @@
+from __future__ import absolute_import
+import unittest
+
+try:
+ from mercurial import rustext
+except ImportError:
+ rustext = None
+
+try:
+ from mercurial.cext import parsers as cparsers
+except ImportError:
+ cparsers = None
+
+@unittest.skipIf(rustext is None or cparsers is None,
+ "rustext.ancestor or the C Extension parsers module "
+ "it relies on is not available")
+class rustancestorstest(unittest.TestCase):
+ """Test the correctness of binding to Rust code.
+
+ This test is merely for the binding to Rust itself: extraction of
+ Python variable, giving back the results etc.
+
+ It is not meant to test the algorithmic correctness of the operations
+ on ancestors it provides. Hence the very simple embedded index data is
+ good enough.
+
+ Algorithmic correctness is asserted by the Rust unit tests.
+ """
+
+ def testmodule(self):
+ self.assertTrue('DAG' in rustext.ancestor.__doc__)
+
+ def testgrapherror(self):
+ self.assertTrue('GraphError' in dir(rustext))
+
+
+if __name__ == '__main__':
+ import silenttestrunner
+ silenttestrunner.main(__name__)