tests/test-rust-ancestor.py
author Boris Feld <boris.feld@octobus.net>
Thu, 20 Dec 2018 12:17:15 +0100
changeset 41034 cca12a31ede5
parent 40968 74f41329bf55
child 41053 d9f439fcdb4c
permissions -rw-r--r--
revlog: add some direct testing of the slicing logic This test check slicing backed by an actual revlog. It will test the C version of slicing (if the test are run with the C extensions).

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__)