Mercurial > public > mercurial-scm > hg
diff tests/test-rust-revlog.py @ 52786:4e34e8fd46d4
rust-pyo3-revlog: nodemap based index methods
They are rather straightforward, except for `_index_get_rev`
that takes care of not initializing a nodetree on some conditions.
In `_index_partialmatch`, we solve the todo that was in the
`hg-cpython`, since we introduced the `py_node_for_rev` helper earlier.
The new test method in `test-rust-revlog.py` provides comparison
with the `hg-cpython` implementation of `InnerRevlog`.
author | Georges Racinet <georges.racinet@cloudcrane.io> |
---|---|
date | Wed, 25 Dec 2024 16:16:22 +0100 |
parents | 07740bd86fd9 |
children | e5f89bd1a5ee |
line wrap: on
line diff
--- a/tests/test-rust-revlog.py Wed Dec 25 11:58:56 2024 +0100 +++ b/tests/test-rust-revlog.py Wed Dec 25 16:16:22 2024 +0100 @@ -4,6 +4,7 @@ bin as node_bin, hex, ) +from mercurial import error try: from mercurial import rustext @@ -25,6 +26,25 @@ node_hex0 = b'd1f4bbb0befc13bd8cd39d0fcdd93b8c078c4a2f' node0 = node_bin(node_hex0) + bogus_node_hex = b'cafe' * 10 + bogus_node = node_bin(bogus_node_hex) + + def test_index_nodemap(self): + idx = self.parserustindex() + self.assertTrue(idx.has_node(self.node0)) + self.assertFalse(idx.has_node(self.bogus_node)) + + self.assertEqual(idx.get_rev(self.node0), 0) + self.assertEqual(idx.get_rev(self.node0), 0) + + self.assertEqual(idx.rev(self.node0), 0) + with self.assertRaises(error.RevlogError) as exc_info: + idx.rev(self.bogus_node) + self.assertEqual(exc_info.exception.args, (None,)) + + self.assertEqual(idx.partialmatch(self.node_hex0[:3]), self.node0) + self.assertIsNone(idx.partialmatch(self.bogus_node_hex[:3])) + self.assertEqual(idx.shortest(self.node0), 1) # Conditional skipping done by the base class