Integration tests: mercurial-testhelpers

Georges Racinet georges.racinet at octobus.net
Mon Nov 23 21:13:45 UTC 2020


Hi,

I've updated recently the Integration Tests Plan [1] with what has been
said during the 5.6 sprint (from the pad) and more ideas and realizations.

## mercurial-testhelpers

Then, I've extracted my helpers as the `mercurial-testhelpers` separate
package [2]. The main driving reason is that even if it went straight to
the core right now, extension authors wouldn't be able to use it until
they drop support for hg 5.6. For some, that would mean at least a few
years…

mercurial-testhelpers is usable right now by extensions and other
downstreams. It comes with examples for the core [3], hg-evolve and
hg-git and is of course entirely tested using itself, with CI etc.

It is compatible down to at least hg 4.3 (I didn't try further).

Just to say how committed I am about it, all the Python testing of
Heptapod relies on it. I must add that its introduction was a tipping
point in development.

## core submission coming soon

That extraction already had me remove some specifics – and provide means
for projects that need them to add them back.

As a result, I feel now ready to start submitting code to the core. I've
explained some of the choices in the README [4].

Even if it's quite small, I'm not sure how to cut it in smaller
reviewable chunks, but I wouldn't probably start by hooking it in
`run-tests.py`, that's not what I'm the most at ease with. I'd simply
tell people to install and run pytest manually in the first drafts [5]
if that's ok. Guidance and feedback would be much appreciated!

I've had a chat with Jörg today about the dreadful
`test-http-bad-server.t`, will experiment later this week or the next to
see if I can make something equivalent and more maintainable out of it.

Best,


[1] https://www.mercurial-scm.org/wiki/IntegrationTestsPlan

[2] https://pypi.org/project/mercurial-testhelpers  and 
https://foss.heptapod.net/mercurial/testhelpers

[3] the core example is the exact same translation of test-revset.t I've
prepared for the sprint (needs to be split into separate concerns and
completed), plus a Python test copied over to check that launching it
with pytest works (it does).

[4]
https://foss.heptapod.net/mercurial/testhelpers/-/blob/branch/default/README.md

[5] of course, that means not removing any existing case until it's run
by the main runner automatically.

-- 
Georges Racinet
https://octobus.net, https://about.heptapod.host, https://heptapod.net
GPG: BF5456F4DC625443849B6E58EE20CA44EF691D39, sur serveurs publics



More information about the Mercurial-devel mailing list