diff --git a/module_build_service/utils/mse.py b/module_build_service/utils/mse.py index a443472e..5d7b8912 100644 --- a/module_build_service/utils/mse.py +++ b/module_build_service/utils/mse.py @@ -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: diff --git a/tests/staged_data/testmodule-no-base-module.yaml b/tests/staged_data/testmodule-no-base-module.yaml new file mode 100644 index 00000000..9abaec0f --- /dev/null +++ b/tests/staged_data/testmodule-no-base-module.yaml @@ -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 diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 9da63de8..9a1a721d 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -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',