runbot/runbot_merge/tests
Xavier Morel 7f7589c50e [FIX] runbot_merge: normalisation of patches before parsing
- Apparently if a user is on windows the ACE editor can swap out their
  line end from unix to windows. The patch parsers were predicated
  upon all patches being in unix mode (because git, and diff).

  Fixup both parsers to convert windows-style line end to unix before
  trying to parse the patch data. Also add a few fallbacks to limit
  the odds of an unhelpful `StopIteration` (though that might hide
  errors more than reveal them...)
- Make sure we support `format-patch --no-signature`, just requires
  using the correct partition direction: I assume I used `rpartition`
  as a form of micro-optimisation *but*

  - If the separator is not found the "patch body" ends up in the
    third parameter rather than the first, which makes the fallback
    difficult.
  - There doesn't seem to be anything preventing *multiple* signature
    separators in a message, and logically the first one should hold
    and the rest is all part of the signature.

  As a result, for both reasons we need to look *forwards* for the
  signature separator, not backwards. Hence `str.partition`.

Fixes #992
2024-12-02 16:32:53 +01:00
..
conftest.py [REM] *: default_crons fixture 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 [FIX] runbot_merge: tracked value ordering 2024-11-20 12:40:15 +01:00
test_batch_consistency.py [FIX] runbot_merge: flaky test 2024-08-05 08:58:05 +02:00
test_by_branch.py [CHG] runbot_merge: move labels cron to triggered 2024-10-22 10:50:09 +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] runbot_merge: add notifications on inactive branch interactions 2024-09-24 10:22:07 +02:00
test_multirepo.py [CHG] runbot_merge: make merge method non-blocking 2024-10-07 08:07:59 +02:00
test_oddities.py [MERGE] runbot_merge, forwardport: latest updates 2024-11-20 08:05:41 +01:00
test_patching.py [FIX] runbot_merge: normalisation of patches before parsing 2024-12-02 16:32:53 +01: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 [FIX] *: unstage on status going from success to failure 2024-09-18 15:19:13 +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