runbot/runbot_merge/tests
Xavier Morel f3a0a5c27c [FIX] runbot_merge: tracking message author on PullRequest events
d4fa1fd353 added tracking to changes
from *comments* (as well as a few hacks around authorship transfer),
however it missed two things:

First, it set the `change-author` during comments handling only, so
changes from the `PullRequest` hook e.g. open, synchronise, close,
edit, don't get attributed to their actual source, and instead just
fall back to uid(1). This is easy enough to fix as the `sender` is
always provided, that can be resolved to a partner which is then set
as the author of whatever changes happen.

Second, I actually missed one of the message hooks: there's both
`_message_log` and `_message_log_batch` and they don't call one
another, so both have to be overridden in order for tracking to be
consistent. In this case, specifically, the *creation* of a tracked
object goes through `_message_log_batch` (since that's a very generic
message and so works on every tracked object created during the
transaction... even though batch has a message per record anyway...)
while *updates* go through `_message_log`.

Fixes #895
2024-06-21 16:33:44 +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] runbot_merge: tracking message author on PullRequest events 2024-06-21 16:33:44 +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