mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-04 22:40:29 +03:00
standardize config on ruamel.yaml with a YAML 1.2 config
This is a key piece of the ongoing `PUBLISH` _config.yml_ migration. There was uneven implementation of which YAML parser to use, and that could lead to bugs where one parser might read a value one way, and a different parser will read the value a different way. I wanted to be sure that YAML 1.2 would always work. This makes all code that handles config files use the same `ruamel.yaml` parsers. This only touches other usages of YAML parsers when there is overlap. This does not port all of _fdroidserver_ to `ruamel.yaml` and YAML 1.2. The metadata files should already be YAML 1.2 anyway. # Conflicts: # fdroidserver/lint.py
This commit is contained in:
parent
53b62415d3
commit
2f47938dbf
15 changed files with 116 additions and 48 deletions
|
|
@ -7,13 +7,12 @@ import tempfile
|
|||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
import ruamel.yaml
|
||||
|
||||
from .shared_test_code import mkdtemp
|
||||
|
||||
import fdroidserver.common
|
||||
import fdroidserver.lint
|
||||
import fdroidserver.metadata
|
||||
from fdroidserver._yaml import yaml_dumper
|
||||
|
||||
basedir = Path(__file__).parent
|
||||
|
||||
|
|
@ -365,40 +364,41 @@ class LintTest(unittest.TestCase):
|
|||
|
||||
def test_lint_config_basic_mirrors_yml(self):
|
||||
os.chdir(self.testdir)
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
with Path('mirrors.yml').open('w') as fp:
|
||||
yaml.dump([{'url': 'https://example.com/fdroid/repo'}], fp)
|
||||
yaml_dumper.dump([{'url': 'https://example.com/fdroid/repo'}], fp)
|
||||
self.assertTrue(fdroidserver.lint.lint_config('mirrors.yml'))
|
||||
|
||||
def test_lint_config_mirrors_yml_kenya_countryCode(self):
|
||||
os.chdir(self.testdir)
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
with Path('mirrors.yml').open('w') as fp:
|
||||
yaml.dump([{'url': 'https://foo.com/fdroid/repo', 'countryCode': 'KE'}], fp)
|
||||
yaml_dumper.dump(
|
||||
[{'url': 'https://foo.com/fdroid/repo', 'countryCode': 'KE'}], fp
|
||||
)
|
||||
self.assertTrue(fdroidserver.lint.lint_config('mirrors.yml'))
|
||||
|
||||
def test_lint_config_mirrors_yml_invalid_countryCode(self):
|
||||
"""WV is "indeterminately reserved" so it should never be used."""
|
||||
os.chdir(self.testdir)
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
with Path('mirrors.yml').open('w') as fp:
|
||||
yaml.dump([{'url': 'https://foo.com/fdroid/repo', 'countryCode': 'WV'}], fp)
|
||||
yaml_dumper.dump(
|
||||
[{'url': 'https://foo.com/fdroid/repo', 'countryCode': 'WV'}], fp
|
||||
)
|
||||
self.assertFalse(fdroidserver.lint.lint_config('mirrors.yml'))
|
||||
|
||||
def test_lint_config_mirrors_yml_alpha3_countryCode(self):
|
||||
"""Only ISO 3166-1 alpha 2 are supported"""
|
||||
os.chdir(self.testdir)
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
with Path('mirrors.yml').open('w') as fp:
|
||||
yaml.dump([{'url': 'https://de.com/fdroid/repo', 'countryCode': 'DEU'}], fp)
|
||||
yaml_dumper.dump(
|
||||
[{'url': 'https://de.com/fdroid/repo', 'countryCode': 'DEU'}], fp
|
||||
)
|
||||
self.assertFalse(fdroidserver.lint.lint_config('mirrors.yml'))
|
||||
|
||||
def test_lint_config_mirrors_yml_one_invalid_countryCode(self):
|
||||
"""WV is "indeterminately reserved" so it should never be used."""
|
||||
os.chdir(self.testdir)
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
with Path('mirrors.yml').open('w') as fp:
|
||||
yaml.dump(
|
||||
yaml_dumper.dump(
|
||||
[
|
||||
{'url': 'https://bar.com/fdroid/repo', 'countryCode': 'BA'},
|
||||
{'url': 'https://foo.com/fdroid/repo', 'countryCode': 'FO'},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue