runbot/runbot_merge/tests
Xavier Morel f303674434 [FIX] *: re-enable notification on status failure
If a PR gets approved *then* fails CI, there should be a notification
warning the author & reviewer since
48e08b657b, it even has a test, which
passes (in fact it has *two*, one of which is redundant, so merge
`test_ci_failure_after_review` into the later `test_ci_approved`).

*However* this is in runbot_merge, turns out in
fafa7ef437 some refactoring was done in
order to override the notification and customise it for *forward
ports* with a failed status... except that override never called its
`super()`, so as soon as forwardport is installed the base
notification stops working, and that's been that since October
2019 (had been added in March that year, ignoring deployment lag).

This can be revealed by adding the corresponding check in the
*forwardport* tests, revealing the failure.

This was a pain to track down, thankfully it reproduced relatively
easily locally.

While this could be resolved in the override, might as well fold it
into the base method in furtherance of #789: the mergebot is only
used by odoo, and only with both modules combined, so splitting them
is not useful. And furthermore it things should work fine with the
forwardport installed but unused.

Fixes #894
2024-06-21 10:27:01 +02:00
..
conftest.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00
README.rst [IMP] runbot_merge: test readme & remove leftover pass 2018-09-03 13:16:36 +02:00
test_basic.py [FIX] *: re-enable notification on status failure 2024-06-21 10:27:01 +02:00
test_batch_consistency.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00
test_by_branch.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00
test_disabled_branch.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +02:00
test_multirepo.py [IMP] *: require explicitly specifying whether exceptions in logs are valid 2024-06-12 15:09:42 +02:00
test_oddities.py [IMP] *: require explicitly specifying whether exceptions in logs are valid 2024-06-12 15:09:42 +02:00
test_project_toggles.py [ADD] *: per-repository webhook secret 2024-06-06 11:07:57 +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