test-rust-revlog.py
61 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
/ tests / test-rust-revlog.py
Georges Racinet
|
r44413 | from __future__ import absolute_import | ||
import unittest | ||||
try: | ||||
from mercurial import rustext | ||||
rustext.__name__ # trigger immediate actual import | ||||
except ImportError: | ||||
rustext = None | ||||
else: | ||||
from mercurial.rustext import revlog | ||||
r44463 | # this would fail already without appropriate ancestor.__package__ | |||
from mercurial.rustext.ancestor import LazyAncestors | ||||
Georges Racinet
|
r44413 | from mercurial.testing import revlog as revlogtesting | ||
@unittest.skipIf( | ||||
Augie Fackler
|
r46554 | rustext is None, | ||
"rustext module revlog relies on is not available", | ||||
Georges Racinet
|
r44413 | ) | ||
class RustRevlogIndexTest(revlogtesting.RevlogBasedTestBase): | ||||
def test_heads(self): | ||||
idx = self.parseindex() | ||||
rustidx = revlog.MixedIndex(idx) | ||||
self.assertEqual(rustidx.headrevs(), idx.headrevs()) | ||||
Georges Racinet
|
r44464 | def test_get_cindex(self): | ||
# drop me once we no longer need the method for shortest node | ||||
idx = self.parseindex() | ||||
rustidx = revlog.MixedIndex(idx) | ||||
cidx = rustidx.get_cindex() | ||||
self.assertTrue(idx is cidx) | ||||
Georges Racinet
|
r44413 | def test_len(self): | ||
idx = self.parseindex() | ||||
rustidx = revlog.MixedIndex(idx) | ||||
self.assertEqual(len(rustidx), len(idx)) | ||||
r44463 | def test_ancestors(self): | |||
idx = self.parseindex() | ||||
rustidx = revlog.MixedIndex(idx) | ||||
lazy = LazyAncestors(rustidx, [3], 0, True) | ||||
# we have two more references to the index: | ||||
# - in its inner iterator for __contains__ and __bool__ | ||||
# - in the LazyAncestors instance itself (to spawn new iterators) | ||||
self.assertTrue(2 in lazy) | ||||
self.assertTrue(bool(lazy)) | ||||
self.assertEqual(list(lazy), [3, 2, 1, 0]) | ||||
# a second time to validate that we spawn new iterators | ||||
self.assertEqual(list(lazy), [3, 2, 1, 0]) | ||||
# let's check bool for an empty one | ||||
self.assertFalse(LazyAncestors(idx, [0], 0, False)) | ||||
Georges Racinet
|
r44413 | |||
if __name__ == '__main__': | ||||
import silenttestrunner | ||||
silenttestrunner.main(__name__) | ||||