py3: force bytestr conversion of "reason" in scmutil.callcatch()
For instance, reason may be an InvalidURL as shown in added test.
tests-pure: fixing test-parseindex2
This is a followup to D7603 (
49fa0b31ee1d) which broke
the tests for pure Python implementation. There are two
divergences between pure and C implementations:
- the pure implementation would accept only -1 as slice end,
whereas C accepts both -1 and len(index)
- in pure Python, `headrevs` is provided by revlog.py, not
by the index.
Differential Revision: https://phab.mercurial-scm.org/D7707
rust-index: add a function to convert PyObject index for hg-core
Function in hg-core need something implementing the `Graph` trait. Right now,
the `hg-cpython` entry points directly turn the PyObject passed as argument
into a `cindex::Index`. However, if we start having the option to use an Index
in Rust, we need to dispatch between the different possible PyObject we could
receive.
So move the "duplicate" call into a unified function. When time come. It will be
easy to update the logic of all interface when the time come.
Differential Revision: https://phab.mercurial-scm.org/D7653
test: extract some generic data and utility from test-rust-ancestor.py
We will reuse this for more tests related to revlog index. In pratice this
series of changesets add an index implementation provided from Rust and we want
to be able to test it.
Differential Revision: https://phab.mercurial-scm.org/D7652
patch: fix header.__repr__() to not have `b''` prefixes in file names
Spotted by Denis Laxalde.
Differential Revision: https://phab.mercurial-scm.org/D7695
cmdutil: allow native string as input to check_at_most_one_arg()
We seem to always convert **opts args to use bytes as keys early on in
Mercurial core, but I'm not sure we have good reason to do that, and
not all extensions do that. It's therefore helpful to be able to pass
in a native string to check_at_most_one_arg().
Differential Revision: https://phab.mercurial-scm.org/D7699