From f6a4befefe41f65dfb34eb59ee10de6e8bf4cfde Mon Sep 17 00:00:00 2001 From: Valerij Maljulin Date: Feb 26 2019 13:09:57 +0000 Subject: Change exception information for errors when parsing modulemd file. This fixes #1149 Signed-off-by: Valerij Maljulin --- diff --git a/module_build_service/utils/submit.py b/module_build_service/utils/submit.py index 2aec8ff..6a69a20 100644 --- a/module_build_service/utils/submit.py +++ b/module_build_service/utils/submit.py @@ -699,7 +699,19 @@ def load_mmd(yaml, is_file=False): # If the modulemd was v1, it will be upgraded to v2 mmd.upgrade() except Exception: - error = 'The following invalid modulemd was encountered: {0}'.format(yaml) + if is_file: + error = 'The modulemd {} is invalid. Please verify the syntax is correct'.format( + os.path.basename(yaml) + ) + if os.path.exists(yaml): + with open(yaml, 'rt') as yaml_hdl: + log.debug('Modulemd content:\n%s', yaml_hdl.read()) + else: + error = 'The modulemd file {} not found!'.format(os.path.basename(yaml)) + log.error('The modulemd file %s not found!', yaml) + else: + error = 'The modulemd is invalid. Please verify the syntax is correct' + log.debug('Modulemd content:\n%s', yaml) log.exception(error) raise UnprocessableEntity(error) diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 334fcbc..9ae5dff 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -33,6 +33,7 @@ from requests.utils import quote import hashlib import pytest from module_build_service.utils import to_text_type +import re from tests import app, init_data, clean_database, reuse_component_init_data from tests import read_staged_data @@ -972,7 +973,8 @@ class TestViews: {'branch': 'master', 'scmurl': 'https://src.stg.fedoraproject.org/modules/' 'testmodule.git?#68931c90de214d9d13feefbd35246a81b6cb8d49'})) data = json.loads(rv.data) - assert data['message'].startswith('The following invalid modulemd was encountered') is True + assert re.match(r'The modulemd .* is invalid\. Please verify the syntax is correct', + data['message']) assert data['status'] == 422 assert data['error'] == 'Unprocessable Entity' @@ -1596,7 +1598,8 @@ class TestViews: data = json.loads(rv.data) assert data['error'] == 'Unprocessable Entity' - assert data['message'].startswith('The following invalid modulemd was encountered') + assert re.match(r'The modulemd .* is invalid\. Please verify the syntax is correct', + data['message']) @pytest.mark.parametrize('api_version', [1, 2]) @patch('module_build_service.auth.get_user', return_value=import_module_user)