Mercurial > hg
changeset 42736:b6f3f704a561
rust-discovery: read the index from a repo passed at init
This makes the API of the Rust PartialDiscovery object now
the same (or rather a subset) of the Python object, hence
easier to control through module policy down the road.
Differential Revision: https://phab.mercurial-scm.org/D6517
author | Georges Racinet <georges.racinet@octobus.net> |
---|---|
date | Wed, 12 Jun 2019 14:31:41 +0100 |
parents | 5154701a5413 |
children | 388622cbc911 |
files | rust/hg-cpython/src/discovery.rs tests/test-rust-discovery.py |
diffstat | 2 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-cpython/src/discovery.rs Wed Jun 12 14:18:12 2019 +0100 +++ b/rust/hg-cpython/src/discovery.rs Wed Jun 12 14:31:41 2019 +0100 @@ -34,10 +34,11 @@ // implemented. def __new__( _cls, - index: PyObject, + repo: PyObject, targetheads: PyObject, _respectsize: bool ) -> PyResult<PartialDiscovery> { + let index = repo.getattr(py, "changelog")?.getattr(py, "index")?; Self::create_instance( py, RefCell::new(Box::new(CorePartialDiscovery::new(
--- a/tests/test-rust-discovery.py Wed Jun 12 14:18:12 2019 +0100 +++ b/tests/test-rust-discovery.py Wed Jun 12 14:31:41 2019 +0100 @@ -31,6 +31,11 @@ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00' ) +class fakerepo(object): + def __init__(self, idx): + """Just make so that self.changelog.index is the given idx.""" + self.index = idx + self.changelog = self @unittest.skipIf(PartialDiscovery is None or cparsers is None, "rustext or the C Extension parsers module " @@ -50,6 +55,9 @@ def parseindex(self): return cparsers.parse_index2(data_non_inlined, False)[0] + def repo(self): + return fakerepo(self.parseindex()) + def testindex(self): idx = self.parseindex() # checking our assumptions about the index binary data: @@ -60,8 +68,7 @@ 3: (2, -1)}) def testaddcommonsmissings(self): - idx = self.parseindex() - disco = PartialDiscovery(idx, [3], True) + disco = PartialDiscovery(self.repo(), [3], True) self.assertFalse(disco.hasinfo()) self.assertFalse(disco.iscomplete()) @@ -76,24 +83,21 @@ self.assertEqual(disco.commonheads(), {1}) def testaddmissingsstats(self): - idx = self.parseindex() - disco = PartialDiscovery(idx, [3], True) + disco = PartialDiscovery(self.repo(), [3], True) self.assertIsNone(disco.stats()['undecided'], None) disco.addmissings([2]) self.assertEqual(disco.stats()['undecided'], 2) def testaddinfocommonfirst(self): - idx = self.parseindex() - disco = PartialDiscovery(idx, [3], True) + disco = PartialDiscovery(self.repo(), [3], True) disco.addinfo([(1, True), (2, False)]) self.assertTrue(disco.hasinfo()) self.assertTrue(disco.iscomplete()) self.assertEqual(disco.commonheads(), {1}) def testaddinfomissingfirst(self): - idx = self.parseindex() - disco = PartialDiscovery(idx, [3], True) + disco = PartialDiscovery(self.repo(), [3], True) disco.addinfo([(2, False), (1, True)]) self.assertTrue(disco.hasinfo()) self.assertTrue(disco.iscomplete())