mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-05 11:48:33 +08:00
Surface an error to the user when no base module could be found in the module's buildrequires
This commit is contained in:
@@ -251,8 +251,10 @@ def get_mmds_required_by_module_recursively(
|
||||
# Get the MMDs of all compatible base modules based on the buildrequires.
|
||||
base_module_mmds = _get_base_module_mmds(mmd)
|
||||
if not base_module_mmds:
|
||||
raise ValueError("No base module found in buildrequires section of %s" % ":".join(
|
||||
[mmd.get_name(), mmd.get_stream(), str(mmd.get_version())]))
|
||||
base_module_choices = ' or '.join(conf.base_module_names)
|
||||
raise UnprocessableEntity(
|
||||
"None of the base module ({}) streams in the buildrequires section could be found"
|
||||
.format(base_module_choices))
|
||||
|
||||
# Add base modules to `mmds`.
|
||||
for base_module in base_module_mmds:
|
||||
|
||||
38
tests/staged_data/testmodule-no-base-module.yaml
Normal file
38
tests/staged_data/testmodule-no-base-module.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
document: modulemd
|
||||
version: 2
|
||||
data:
|
||||
summary: A test module in all its beautiful beauty
|
||||
description: >-
|
||||
This module demonstrates how to write simple modulemd files And can be used for
|
||||
testing the build and release pipeline.
|
||||
license:
|
||||
module:
|
||||
- MIT
|
||||
dependencies:
|
||||
- buildrequires:
|
||||
platform: [Go]
|
||||
requires:
|
||||
platform: [Sox]
|
||||
references:
|
||||
community: https://docs.pagure.org/modularity/
|
||||
documentation: https://fedoraproject.org/wiki/Fedora_Packaging_Guidelines_for_Modules
|
||||
profiles:
|
||||
default:
|
||||
rpms:
|
||||
- tangerine
|
||||
api:
|
||||
rpms:
|
||||
- perl-Tangerine
|
||||
- tangerine
|
||||
components:
|
||||
rpms:
|
||||
perl-List-Compare:
|
||||
rationale: A dependency of tangerine.
|
||||
ref: master
|
||||
perl-Tangerine:
|
||||
rationale: Provides API for this module and is a dependency of tangerine.
|
||||
ref: master
|
||||
tangerine:
|
||||
rationale: Provides API for this module.
|
||||
ref: master
|
||||
buildorder: 10
|
||||
@@ -800,6 +800,23 @@ class TestViews:
|
||||
assert module.buildrequires[0].context == '00000000'
|
||||
assert module.buildrequires[0].stream_version == 280000
|
||||
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_no_base_module(self, mocked_scm, mocked_get_user):
|
||||
FakeSCM(mocked_scm, 'testmodule', 'testmodule-no-base-module.yaml',
|
||||
'620ec77321b2ea7b0d67d82992dda3e1d67055b4')
|
||||
|
||||
rv = self.client.post('/module-build-service/2/module-builds/', data=json.dumps(
|
||||
{'branch': 'master', 'scmurl': 'git://pkgs.stg.fedoraproject.org/modules/'
|
||||
'testmodule.git?#68931c90de214d9d13feefbd35246a81b6cb8d49'}))
|
||||
data = json.loads(rv.data)
|
||||
assert data == {
|
||||
'status': 422,
|
||||
'message': ('None of the base module (platform) streams in the buildrequires section '
|
||||
'could be found'),
|
||||
'error': 'Unprocessable Entity'
|
||||
}
|
||||
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
@patch('module_build_service.config.Config.rebuild_strategy_allow_override',
|
||||
|
||||
Reference in New Issue
Block a user