tests/test-rust-revlog.py
changeset 44011 c627f1b2f3c3
parent 43961 b69d5f3a41d0
child 44012 443dc1655923
--- a/tests/test-rust-revlog.py	Fri Dec 13 19:52:26 2019 +0100
+++ b/tests/test-rust-revlog.py	Thu Dec 12 18:11:44 2019 +0100
@@ -10,6 +10,9 @@
 else:
     from mercurial.rustext import revlog
 
+    # this would fail already without appropriate ancestor.__package__
+    from mercurial.rustext.ancestor import LazyAncestors
+
 from mercurial.testing import revlog as revlogtesting
 
 
@@ -27,6 +30,22 @@
         rustidx = revlog.MixedIndex(idx)
         self.assertEqual(len(rustidx), len(idx))
 
+    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))
+
 
 if __name__ == '__main__':
     import silenttestrunner