mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-09-11 23:23:27 +02:00
Like with the App class in the commit before, this makes it a lot easier to work with this data when converting between the internal formats and external formats like YAML, JSON, MsgPack, protobuf, etc. The one unfortunate thing here is Build.update. It becomes dict.update(), which is a method not an attribute. build.get('update') or build['update'] could be used, but that would be oddly inconsistent. So instead the field is renamed to 'androidupdate', except for in the .txt v0 metadata files. This better describes what field does anyway, since it runs `android update`. Build.update is only referenced in two places right next to each other for the ant builds, so this change still seems worthwhile.
67 lines
2.2 KiB
Python
Executable File
67 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# http://www.drdobbs.com/testing/unit-testing-with-python/240165163
|
|
|
|
import inspect
|
|
import optparse
|
|
import os
|
|
import sys
|
|
import unittest
|
|
import yaml
|
|
|
|
localmodule = os.path.realpath(
|
|
os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
|
|
print('localmodule: ' + localmodule)
|
|
if localmodule not in sys.path:
|
|
sys.path.insert(0, localmodule)
|
|
|
|
import fdroidserver.common
|
|
import fdroidserver.metadata
|
|
|
|
|
|
class MetadataTest(unittest.TestCase):
|
|
'''fdroidserver/metadata.py'''
|
|
|
|
def test_read_metadata(self):
|
|
|
|
def _build_yaml_representer(dumper, data):
|
|
'''Creates a YAML representation of a Build instance'''
|
|
return dumper.represent_dict(data)
|
|
|
|
testsdir = os.path.dirname(__file__)
|
|
os.chdir(testsdir)
|
|
|
|
self.maxDiff = None
|
|
|
|
# these need to be set to prevent code running on None, only
|
|
# 'accepted_formats' is actually used in metadata.py
|
|
config = dict()
|
|
config['sdk_path'] = '/opt/android-sdk'
|
|
config['ndk_paths'] = dict()
|
|
config['accepted_formats'] = ['json', 'txt', 'yml']
|
|
fdroidserver.common.config = config
|
|
|
|
apps = fdroidserver.metadata.read_metadata(xref=True)
|
|
for appid in ('org.smssecure.smssecure', 'org.adaway', 'org.videolan.vlc'):
|
|
savepath = os.path.join('metadata', 'dump', appid + '.yaml')
|
|
frommeta = dict(apps[appid])
|
|
self.assertTrue(appid in apps)
|
|
with open(savepath, 'r') as f:
|
|
frompickle = yaml.load(f)
|
|
self.assertEqual(frommeta, frompickle)
|
|
# Uncomment to overwrite
|
|
# with open(savepath, 'w') as f:
|
|
# yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer)
|
|
# yaml.dump(frommeta, f, default_flow_style=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = optparse.OptionParser()
|
|
parser.add_option("-v", "--verbose", action="store_true", default=False,
|
|
help="Spew out even more information than normal")
|
|
(fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
|
|
|
|
newSuite = unittest.TestSuite()
|
|
newSuite.addTest(unittest.makeSuite(MetadataTest))
|
|
unittest.main()
|