runbot/runbot_merge/tests
Xavier Morel cab683ae0f [IMP] runbot_merge: remove "sync PRs", fetch unknown PRs
The old "sync pr" thing is turning out to be a bust, while it
originally worked fine these days it's a catastrophe as the v4 API
performances seem to have significantly degraded, to the point that
fetching all 15k PRs by pages of 100 simply blows up after a few
hundreds/thousands.

Instead, add a table of PRs to sync: if we get notified of a
"compatible" PR (enabled repo & target) which we don't know of, create
an entry in a "fetch jobs" table, then a cron will handle fetching the
PR then fetching/applying all relevant metadata (statuses,
review-comments and reviews).

Also change indexation of Commit(sha) and PR(head) to hash, as btree
indexes are not really sensible for such content (the ordering is
unhelpful and the index locality is awful by design/definition).
2018-09-03 13:16:36 +02:00
..
fake_github [IMP] runbot_merge: remove "sync PRs", fetch unknown PRs 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 [IMP] runbot_merge: remove "sync PRs", fetch unknown PRs 2018-09-03 13:16:36 +02:00
test_basic.py [IMP] runbot_merge: remove "sync PRs", fetch unknown PRs 2018-09-03 13:16:36 +02:00
test_multirepo.py [IMP] runbot_merge: don't create unstaged stagings 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.