runbot/runbot_merge/tests
Xavier Morel a40b4c20da [ADD] runbot_merge: flag to disable rebase before merge
rebase-and-merge (or squash-merge if pr.commits == 1) remains default,
but there are use cases like forward ports (merge branch X into branch
X+1 so that fixes to X are available in X+1) where we really really
don't want to rebase the source.

This commits implements two alternative merge methods:

If the PR and its target are ~disjoint, perform a straight merge (same
as old default mode).

However if the head of the PR has two parents *and* one of these
parents is a commit of the target, assume this is a merge commit to
fix a conflict (common during forward ports as X+1 will have changed
independently from and incompatibly with X in some ways).

In that case, merge by copying the PR's head atop the
target (basically rebase just that commit, only updating the link to
the parent which is part of target so that it points to the head of
target instead of whatever it was previously).
2018-09-03 13:16:36 +02:00
..
fake_github [ADD] runbot_merge: flag to disable rebase before merge 2018-09-03 13:16:36 +02:00
conftest.py [IMP] runbot_merge: pluginify github mock 2018-09-03 13:16:36 +02:00
local.py [IMP] runbot_merge: PR source branch/label handling 2018-09-03 13:16:36 +02:00
README.txt [ADD] runbot_merge: remote github plugin 2018-09-03 13:16:36 +02:00
remote.py [ADD] runbot_merge: flag to disable rebase before merge 2018-09-03 13:16:36 +02:00
test_basic.py [ADD] runbot_merge: flag to disable rebase before merge 2018-09-03 13:16:36 +02:00
test_multirepo.py [ADD] runbot_merge: flag to disable rebase before merge 2018-09-03 13:16:36 +02:00

Execute this test suite using pytest.

The default mode is to run tests locally using mock objects in place of
github, see the docstring of remote.py for additional instructions to run
against github "actual".

Shared properties running tests, regardless of the github implementation:

* test should be run from the root of the runbot repository providing the
  name of this module aka ``pytest runbot_merge`` or
  ``python -mpytest runbot_merge``
* a database name to use must be provided using ``--db``, the database should
  not exist beforehand
* the addons path must be specified using ``--addons-path``, both "runbot" and
  the standard addons (odoo/addons) must be provided explicitly

See pytest's documentation for other options, I would recommend ``-rXs``,
``-v`` and ``--showlocals``.

When running "remote" tests as they take a very long time (hours) `-x`
(aka ``--maxfail=1``) and ``--ff`` (run previously failed first) is also
recommended unless e.g. you run the tests overnight.