mirror of
https://github.com/odoo/runbot.git
synced 2025-03-19 09:25:46 +07:00
![]() PRs transitioning to 'ready' had been checked and tested but turns out I had completely forgotten to test that stagings would validate properly therefore of course they didn't. The issue here was I'd forgotten `''.split(',')` returns `['']` rather than `[]`, so on an empty required_statuses the staging validator would keep looking for a status matching the context `''` and would never find it, keeping the staging pending until timeout. So most likely the problem could have been resolved by just adding a condition to [r.strip() for r in repomap[c.sha].required_statuses.split(',')] but I'd already done all the rest of the reorganisation by that point, test pass and I think it's a somewhat better logic. Therefore I'll go with that for now. * properly handle empty required_statuses during staging validation * remove the final postcondition, if we're missing commits which don't require any statuse we should not care * expand test to include up to merging PRs * automatically create dummy commits when creating stagings, that way the relevant commits are in the database (can't hurt) PS: an other alternative would have been to filter out or skip ahead on commits which don't require any statuses aka cmap & required_statuse / cmap would not even have that entry |
||
---|---|---|
.. | ||
conftest.py | ||
README.rst | ||
remote.py | ||
test_basic.py | ||
test_multirepo.py | ||
test_utils.py |
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