Circular dependency feature not compatible with template's rebel modules
Module
The issue first occurred in https://github.com/coopiteasy/cie-custom/pull/109, which contains custom modules.
Describe the bug
Given:
- Module
spp_pos_mustardin https://github.com/coopiteasy/cie-custom/tree/12.0 depends onpos_shift_partner_can_shop. - Module
pos_shift_partner_can_shopexists in our repository https://github.com/carmenbianca/circular-rebel-example. - Another module
other_modulein our repository depends onspp_pos_mustard. (edit:spp_pos_mustardis added to test-requirements.txt) - Module
pos_shift_partner_can_shopis a rebel module as per https://github.com/OCA/oca-addons-repo-template.
Then:
- The test for
pos_shift_partner_can_shopwill pass, correctly installing itself andspp_pos_mustard. - The test for
other_modulewill fail, failing to installspp_pos_mustardbecause the dependencypos_shift_partner_can_shopis not met.
See https://github.com/carmenbianca/circular-rebel-example for example GitHub CI runs.
To Reproduce
Affected versions: Any
Described above with example repository.
Expected behavior
I expect pos_shift_partner_can_shop to be pip-installed always so that all modules in test-requirements.txt can be installed without error.
Additional context N/A
Tagging @remytms
Did this scenario ever work or is it a regression of #58 (at first glance I don't see how it could have worked before) ?
A version of this worked before. Before, as well as having spp_pos_mustard in the test-requirements.txt, pos_shift_partner_can_shop itself would also be in test-requirements.txt. Like so:
git+https://github.com/coopiteasy/[email protected]#subdirectory=setup/spp_pos_mustard
git+https://github.com/carmenbianca/[email protected]#subdirectory=setup/pos_shift_partner_can_shop
This would satisfy the Python packaging requirements, and pos_shift_partner_can_shop would later be re-installed from the repository directory. Obviously not a perfect solution. But this stopped working after #58 because the pos_shift_partner_can_shop in test-requirements.txt would not be compatible with the generated pos_shift_partner_can_shop in test-constraints.txt.
The easy/naïve solution, to me, might be to list all local modules in test-constraints.txt. Whether or not excluded/not-included modules are pip-installed doesn't affect the outcome of the test, because they're not installed/initialised on the database. Alternatively, if that is too much installing, one could add an ALWAYS_PIP_INSTALL environment variable which the oca_list_addons_to_test_as_reqs script takes into account, and which would (manually) contain rebel modules with circular dependencies.
@carmenbianca if I understood your issue correctely, it might be fixed by https://github.com/OCA/oca-ci/pull/72