mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-04 22:40:29 +03:00
metadata: validate STRING and INT build field types
This converts float/int to string for things like commit: or versionName:. For versionCode, which must be an integer, it throws an exception if the data is any other type.
This commit is contained in:
parent
b2daf96284
commit
13d9a122bf
2 changed files with 55 additions and 1 deletions
|
|
@ -15,6 +15,7 @@ import unittest
|
|||
import yaml
|
||||
import tempfile
|
||||
import textwrap
|
||||
from collections import OrderedDict
|
||||
from unittest import mock
|
||||
|
||||
localmodule = os.path.realpath(
|
||||
|
|
@ -180,6 +181,50 @@ class MetadataTest(unittest.TestCase):
|
|||
self.maxDiff = None
|
||||
self.assertEqual(result.read(), orig.read())
|
||||
|
||||
def test_post_parse_yaml_metadata(self):
|
||||
fdroidserver.metadata.warnings_action = 'error'
|
||||
yamldata = OrderedDict()
|
||||
builds = []
|
||||
yamldata['Builds'] = builds
|
||||
build = OrderedDict()
|
||||
builds.append(build)
|
||||
|
||||
build['versionCode'] = 1.1
|
||||
self.assertRaises(fdroidserver.exception.MetaDataException,
|
||||
fdroidserver.metadata.post_parse_yaml_metadata, yamldata)
|
||||
|
||||
build['versionCode'] = '1'
|
||||
self.assertRaises(fdroidserver.exception.MetaDataException,
|
||||
fdroidserver.metadata.post_parse_yaml_metadata, yamldata)
|
||||
|
||||
build['versionCode'] = 1
|
||||
build['versionName'] = 1
|
||||
fdroidserver.metadata.post_parse_yaml_metadata(yamldata)
|
||||
self.assertNotEqual(1, yamldata['Builds'][0]['versionName'])
|
||||
self.assertEqual('1', yamldata['Builds'][0]['versionName'])
|
||||
self.assertEqual(1, yamldata['Builds'][0]['versionCode'])
|
||||
|
||||
build['versionName'] = 1.0
|
||||
fdroidserver.metadata.post_parse_yaml_metadata(yamldata)
|
||||
self.assertNotEqual(1.0, yamldata['Builds'][0]['versionName'])
|
||||
self.assertEqual('1.0', yamldata['Builds'][0]['versionName'])
|
||||
|
||||
build['commit'] = 1.0
|
||||
fdroidserver.metadata.post_parse_yaml_metadata(yamldata)
|
||||
self.assertNotEqual(1.0, yamldata['Builds'][0]['commit'])
|
||||
self.assertEqual('1.0', yamldata['Builds'][0]['commit'])
|
||||
|
||||
teststr = '98234fab134b'
|
||||
build['commit'] = teststr
|
||||
fdroidserver.metadata.post_parse_yaml_metadata(yamldata)
|
||||
self.assertEqual(teststr, yamldata['Builds'][0]['commit'])
|
||||
|
||||
testcommitid = 1234567890
|
||||
build['commit'] = testcommitid
|
||||
fdroidserver.metadata.post_parse_yaml_metadata(yamldata)
|
||||
self.assertNotEqual(testcommitid, yamldata['Builds'][0]['commit'])
|
||||
self.assertEqual('1234567890', yamldata['Builds'][0]['commit'])
|
||||
|
||||
def test_read_metadata_sort_by_time(self):
|
||||
testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir)
|
||||
metadatadir = os.path.join(testdir, 'metadata')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue