mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Merge branch 'remove-provides-in-yml' into 'master'
Remove `Provides:` in yaml metadata Closes #676 See merge request fdroid/fdroidserver!654
This commit is contained in:
commit
7090ce63dd
@ -53,7 +53,7 @@ def warn_or_exception(value):
|
|||||||
app_fields = set([
|
app_fields = set([
|
||||||
'Disabled',
|
'Disabled',
|
||||||
'AntiFeatures',
|
'AntiFeatures',
|
||||||
'Provides',
|
'Provides', # deprecated, txt only
|
||||||
'Categories',
|
'Categories',
|
||||||
'License',
|
'License',
|
||||||
'Author Name',
|
'Author Name',
|
||||||
@ -97,7 +97,6 @@ app_fields = set([
|
|||||||
yaml_app_field_order = [
|
yaml_app_field_order = [
|
||||||
'Disabled',
|
'Disabled',
|
||||||
'AntiFeatures',
|
'AntiFeatures',
|
||||||
'Provides',
|
|
||||||
'Categories',
|
'Categories',
|
||||||
'License',
|
'License',
|
||||||
'AuthorName',
|
'AuthorName',
|
||||||
@ -1073,12 +1072,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,6 +367,25 @@ 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_be_ignored(self):
|
||||||
|
mf = io.StringIO(textwrap.dedent("""\
|
||||||
|
Provides: this.is.deprecated
|
||||||
|
AutoName: F-Droid
|
||||||
|
RepoType: git
|
||||||
|
Builds:
|
||||||
|
- versionCode: 1
|
||||||
|
versionName: v0.1.0
|
||||||
|
prebuild: |-
|
||||||
|
a && b && sed -i 's,a,b,'
|
||||||
|
"""))
|
||||||
|
mf.name = 'mock_filename.yaml'
|
||||||
|
mf.seek(0)
|
||||||
|
result = {}
|
||||||
|
with mock.patch('fdroidserver.metadata.warnings_action', 'error'):
|
||||||
|
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()
|
||||||
app = fdroidserver.metadata.App()
|
app = fdroidserver.metadata.App()
|
||||||
@ -521,6 +540,34 @@ class MetadataTest(unittest.TestCase):
|
|||||||
UpdateCheckMode: None
|
UpdateCheckMode: None
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
|
def test_write_yaml_make_sure_provides_does_not_get_written(self):
|
||||||
|
mf = io.StringIO()
|
||||||
|
app = fdroidserver.metadata.App()
|
||||||
|
app.Categories = ['None']
|
||||||
|
app.Provides = 'this.is.deprecated'
|
||||||
|
app.builds = []
|
||||||
|
build = fdroidserver.metadata.Build()
|
||||||
|
build.versionCode = 102030
|
||||||
|
build.versionName = 'v1.2.3'
|
||||||
|
build.gradle = ['yes']
|
||||||
|
app.builds.append(build)
|
||||||
|
fdroidserver.metadata.write_yaml(mf, app)
|
||||||
|
mf.seek(0)
|
||||||
|
self.assertEqual(mf.read(), textwrap.dedent("""\
|
||||||
|
Categories:
|
||||||
|
- None
|
||||||
|
License: Unknown
|
||||||
|
|
||||||
|
Builds:
|
||||||
|
- versionName: v1.2.3
|
||||||
|
versionCode: 102030
|
||||||
|
gradle:
|
||||||
|
- yes
|
||||||
|
|
||||||
|
AutoUpdateMode: None
|
||||||
|
UpdateCheckMode: None
|
||||||
|
"""))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.chdir(os.path.dirname(__file__))
|
os.chdir(os.path.dirname(__file__))
|
||||||
|
Loading…
Reference in New Issue
Block a user