Subject: Re: [bug#38824] [PATCH] gnu: mercurial: Update to 5.2.1.

From: "LaFreniere\, Joseph" <[email-masked]>
Date: Sun, 05 Jan 2020 00:15:44 -0600

On Fri, 2020-01-03 at 17:02 -0600, Brett Gilio wrote:
> We do have a python-nose package. Is this different from the 
> nose unit mentioned in the rationale for disabling the tests?

I can confirm Roel Janssen's guess that python-nose is the 
relevant package and that it provides the nose unit test runner.

Roel Janssen <[email-masked]> writes:
> I don't know much about Python, so I'm not sure whether the test 
> suite just hasn't been made Python-3-compatible, or whether it's 
> something else, and whether this has always been a problem, or 
> whether it was introduced by this update.

>From https://www.mercurial-scm.org/wiki/Python3 as of this 
writing:
> Mercurial 5.2 is the first release that officially has support 
> for Python 3. Supported Python 3 versions are 3.5, 3.6, and 
> 3.7. Python 3.8 mostly works, but there are a few known 
> incompatibilities. Mercurial with Python 3 on Windows is not yet 
> widely tested and there are some known issues.

> It is the project policy for Mercurial and its core extensions 
> to be compatible with Python 3. Over 99% of tests pass with 
> Python 3 and test regressions are treated seriously.

> Most used 3rd party extensions like evolve and topic have been 
> ported to Python 3. There are some which have not yet been 
> ported.

> Assuming Windows porting proceeds well, it is expected we will 
> drop support for Python 2.7 sometime in 2020.

The output I obtained from running `python3 -m nose` in the 
repository's root is attached.  Looking at 
e.g. mercurial/pycompat.py shows that Mercurial's devs are indeed 
aware of these Python3 compatibility issues:

> # TODO: .buffer might not exist if std streams were replaced; 
> we'll need
> # a silly wrapper to make a bytes stream backed by a unicode 
> one.

I think that for now the options are to
1. continue using Python2 for Mercurial;
2. use Python3 but disable all tests, as Janssen's patch suggests;
3. use Python3 but disable the known-failing tests; or
4. hold off on updating the package until upstream supports 
Python3 across its entire test suite.

Of those three, I am most in favor of the third option.  I would 
be glad to submit a patch that implements it if there is agreement 
to take that direction.

--
Joseph LaFreniere