mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-10-04 16:31:05 +03:00
better exception and waring message when yaml metadata checks fail; build flags check optional
This commit is contained in:
parent
0d005ab83a
commit
6a06944945
2 changed files with 18 additions and 15 deletions
|
@ -1078,21 +1078,22 @@ def parse_yaml_metadata(mf, app):
|
||||||
if yamldata:
|
if yamldata:
|
||||||
for field in yamldata:
|
for field in yamldata:
|
||||||
if field not in yaml_app_fields:
|
if field not in yaml_app_fields:
|
||||||
warn_or_exception(_('Unrecognised app field: {fieldname}')
|
warn_or_exception(_("Unrecognised app field '{fieldname}' "
|
||||||
.format(fieldname=field))
|
"in '{path}'").format(fieldname=field,
|
||||||
if not yamldata.get('Builds', None):
|
path=mf.name))
|
||||||
warn_or_exception(_('Missing app field: {fieldname}')
|
if yamldata.get('Builds', None):
|
||||||
.format(fieldname='Builds'))
|
for build in yamldata.get('Builds', []):
|
||||||
for build in yamldata.get('Builds', []):
|
# put all build flag keywords into a set to avoid
|
||||||
# put all build flag keywords into a set to avoid
|
# excessive looping action
|
||||||
# excessive looping action
|
build_flag_set = set()
|
||||||
build_flag_set = set()
|
for build_flag in build.keys():
|
||||||
for build_flag in build.keys():
|
build_flag_set.add(build_flag)
|
||||||
build_flag_set.add(build_flag)
|
for build_flag in build_flag_set:
|
||||||
for build_flag in build_flag_set:
|
if build_flag not in build_flags:
|
||||||
if build_flag not in build_flags:
|
warn_or_exception(
|
||||||
warn_or_exception(_('Unrecognised build flag: {build_flag}')
|
_("Unrecognised build flag '{build_flag}' "
|
||||||
.format(build_flag=build_flag))
|
"in '{path}'").format(build_flag=build_flag,
|
||||||
|
path=mf.name))
|
||||||
app.update(yamldata)
|
app.update(yamldata)
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ class MetadataTest(unittest.TestCase):
|
||||||
RepoType: git
|
RepoType: git
|
||||||
Builds: []
|
Builds: []
|
||||||
bad: value"""))
|
bad: value"""))
|
||||||
|
mf.name = 'mock_filename.yaml'
|
||||||
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
||||||
with self.assertRaises(MetaDataException):
|
with self.assertRaises(MetaDataException):
|
||||||
fdroidserver.metadata.parse_yaml_metadata(mf, {})
|
fdroidserver.metadata.parse_yaml_metadata(mf, {})
|
||||||
|
@ -159,6 +160,7 @@ class MetadataTest(unittest.TestCase):
|
||||||
RepoType: git
|
RepoType: git
|
||||||
Builds:
|
Builds:
|
||||||
- bad: value"""))
|
- bad: value"""))
|
||||||
|
mf.name = 'mock_filename.yaml'
|
||||||
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
||||||
with self.assertRaises(MetaDataException):
|
with self.assertRaises(MetaDataException):
|
||||||
fdroidserver.metadata.parse_yaml_metadata(mf, {})
|
fdroidserver.metadata.parse_yaml_metadata(mf, {})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue