runbot/runbot_merge/tests
Xavier Morel 3ee3e9cc81 [IMP] *: trigger-ify staging cron
The staging cron turns out to be pretty reasonable to trigger, as we
already have a handler on the transition of a batch to `not blocked`,
which is exactly when we want to create a staging (that and the
completion of the previous staging).

The batch transition is in a compute which is not awesome, but on the
flip side we also cancel active stagings in that exact scenario (if it
applies), so that matches.

The only real finesse is that one of the tests wants to observe the
instant between the end of a staging (and creation of splits) and the
start of the next one, which because the staging cron is triggered by
the failure of the previous staging is now "atomic", requiring
disabling the staging cron, which means the trigger is skipped
entirely. So this requires triggering the staging cron by hand.
2024-08-02 15:14:50 +02:00
..
conftest.py [IMP] *: trigger-ify staging cron 2024-08-02 15:14:50 +02:00
README.rst [IMP] runbot_merge: test readme & remove leftover pass 2018-09-03 13:16:36 +02:00
test_basic.py [IMP] *: trigger-ify staging cron 2024-08-02 15:14:50 +02:00
test_batch_consistency.py [IMP] runbot_merge: ensure inconsistent batches don't merge 2024-07-23 13:00:43 +02:00
test_by_branch.py [IMP] *: rely only on triggers to run statuses propagation 2024-08-02 12:12:20 +02:00
test_dfm.py [ADD] runbot_merge: rendering of PR descriptions 2024-07-15 10:28:28 +02:00
test_disabled_branch.py [IMP] *: crons tests running for better triggered compatibility 2024-08-02 09:00:34 +02:00
test_multirepo.py [IMP] *: trigger-ify staging cron 2024-08-02 15:14:50 +02:00
test_oddities.py [FIX] *: don't send merge errors to logging 2024-07-26 14:48:59 +02:00
test_project_toggles.py [IMP] *: trigger-ify staging cron 2024-08-02 15:14:50 +02:00
test_provisioning.py [IMP] runbot_merge, forwardport: minor cleanups 2023-08-10 13:33:16 +02:00
test_staging.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00
test_status_overrides.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00

Execute this test suite using pytest.

The default mode is to run tests locally using a mock github.com.

See the docstring of remote.py for instructions to run against github "actual"
(including remote-specific options) and the end of this file for a sample.

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.

``pytest.ini`` sample
---------------------

.. code:: ini

    [github]
    owner = test-org
    token = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    [role_reviewer]
    name = Dick Bong
    user = loginb
    token = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

    [role_self_reviewer]
    name = Fanny Chmelar
    user = loginc
    token = cccccccccccccccccccccccccccccccccccccccc

    [role_other]
    name = Harry Baals
    user = logind
    token = dddddddddddddddddddddddddddddddddddddddd