mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-04 22:40:29 +03:00
parse yaml: ignore (and warn) deprecated field: Provides
This commit is contained in:
parent
6e48663230
commit
dcf3837bcb
2 changed files with 20 additions and 6 deletions
|
|
@ -1071,12 +1071,25 @@ def parse_json_metadata(mf, app):
|
||||||
def parse_yaml_metadata(mf, app):
|
def parse_yaml_metadata(mf, app):
|
||||||
yamldata = yaml.safe_load(mf)
|
yamldata = yaml.safe_load(mf)
|
||||||
|
|
||||||
|
deprecated_in_yaml = ['Provides']
|
||||||
|
|
||||||
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}' "
|
if field not in deprecated_in_yaml:
|
||||||
"in '{path}'").format(fieldname=field,
|
warn_or_exception(_("Unrecognised app field "
|
||||||
path=mf.name))
|
"'{fieldname}' in '{path}'")
|
||||||
|
.format(fieldname=field,
|
||||||
|
path=mf.name))
|
||||||
|
|
||||||
|
for deprecated_field in deprecated_in_yaml:
|
||||||
|
if deprecated_field in yamldata:
|
||||||
|
logging.warning(_("Ignoring '{field}' in '{metapath}' "
|
||||||
|
"metadata because it is deprecated.")
|
||||||
|
.format(field=deprecated_field,
|
||||||
|
metapath=mf.name))
|
||||||
|
del(yamldata[deprecated_field])
|
||||||
|
|
||||||
if yamldata.get('Builds', None):
|
if yamldata.get('Builds', None):
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,7 @@ class MetadataTest(unittest.TestCase):
|
||||||
'prebuild': "a && b && "
|
'prebuild': "a && b && "
|
||||||
"sed -i 's,a,b,'"}]})
|
"sed -i 's,a,b,'"}]})
|
||||||
|
|
||||||
def test_parse_yaml_provides_should_raise_exception(self):
|
def test_parse_yaml_provides_should_be_ignored(self):
|
||||||
mf = io.StringIO(textwrap.dedent("""\
|
mf = io.StringIO(textwrap.dedent("""\
|
||||||
Provides: this.is.deprecated
|
Provides: this.is.deprecated
|
||||||
AutoName: F-Droid
|
AutoName: F-Droid
|
||||||
|
|
@ -382,8 +382,9 @@ class MetadataTest(unittest.TestCase):
|
||||||
mf.seek(0)
|
mf.seek(0)
|
||||||
result = {}
|
result = {}
|
||||||
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
||||||
with self.assertRaises(fdroidserver.metadata.MetaDataException):
|
fdroidserver.metadata.parse_yaml_metadata(mf, result)
|
||||||
fdroidserver.metadata.parse_yaml_metadata(mf, result)
|
self.assertNotIn('Provides', result)
|
||||||
|
self.assertNotIn('provides', result)
|
||||||
|
|
||||||
def test_write_yaml_1_line_scripts_as_string(self):
|
def test_write_yaml_1_line_scripts_as_string(self):
|
||||||
mf = io.StringIO()
|
mf = io.StringIO()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue