mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-04 22:40:12 +01:00
133 lines
5.4 KiB
Python
Executable File
133 lines
5.4 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
|
|
import tempfile
|
|
|
|
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', 'com.politedroid'):
|
|
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)
|
|
# comment above assert and uncomment below to update test
|
|
# files when new metadata fields are added
|
|
# with open(savepath, 'w') as f:
|
|
# yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer)
|
|
# yaml.dump(frommeta, f, default_flow_style=False)
|
|
|
|
def test_rewrite_yaml_fakeotaupdate(self):
|
|
|
|
# setup/reset test dir if necessary and setup params
|
|
tmpdir = os.path.join(os.path.dirname(__file__), '..', '.testfiles')
|
|
if not os.path.exists(tmpdir):
|
|
os.makedirs(tmpdir)
|
|
testdir = tempfile.mkdtemp(prefix='test_rewrite_metadata_', dir=tmpdir)
|
|
fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']}
|
|
|
|
# rewrite metadata
|
|
allapps = fdroidserver.metadata.read_metadata(xref=True)
|
|
for appid, app in allapps.items():
|
|
if appid == 'fake.ota.update':
|
|
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
|
|
|
|
# assert rewrite result
|
|
with open(os.path.join(testdir, 'fake.ota.update.yml'), 'r', encoding='utf-8') as result:
|
|
with open('metadata-rewrite-yml/fake.ota.update.yml', 'r', encoding='utf-8') as orig:
|
|
self.maxDiff = None
|
|
self.assertEqual(result.read(), orig.read())
|
|
|
|
def test_rewrite_yaml_fdroidclient(self):
|
|
|
|
# setup/reset test dir if necessary and setup params
|
|
tmpdir = os.path.join(os.path.dirname(__file__), '..', '.testfiles')
|
|
if not os.path.exists(tmpdir):
|
|
os.makedirs(tmpdir)
|
|
testdir = tempfile.mkdtemp(prefix='test_rewrite_metadata_', dir=tmpdir)
|
|
fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']}
|
|
|
|
# rewrite metadata
|
|
allapps = fdroidserver.metadata.read_metadata(xref=True)
|
|
for appid, app in allapps.items():
|
|
if appid == 'org.fdroid.fdroid':
|
|
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
|
|
|
|
# assert rewrite result
|
|
with open(os.path.join(testdir, 'org.fdroid.fdroid.yml'), 'r', encoding='utf-8') as result:
|
|
with open('metadata-rewrite-yml/org.fdroid.fdroid.yml', 'r', encoding='utf-8') as orig:
|
|
self.maxDiff = None
|
|
self.assertEqual(result.read(), orig.read())
|
|
|
|
def test_rewrite_yaml_special_build_params(self):
|
|
|
|
# setup/reset test dir if necessary and setup params
|
|
tmpdir = os.path.join(os.path.dirname(__file__), '..', '.testfiles')
|
|
if not os.path.exists(tmpdir):
|
|
os.makedirs(tmpdir)
|
|
testdir = tempfile.mkdtemp(prefix='test_rewrite_metadata_', dir=tmpdir)
|
|
fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']}
|
|
|
|
# rewrite metadata
|
|
allapps = fdroidserver.metadata.read_metadata(xref=True)
|
|
for appid, app in allapps.items():
|
|
if appid == 'app.with.special.build.params':
|
|
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
|
|
|
|
# assert rewrite result
|
|
with open(os.path.join(testdir, 'app.with.special.build.params.yml'), 'r', encoding='utf-8') as result:
|
|
with open('metadata-rewrite-yml/app.with.special.build.params.yml', 'r', encoding='utf-8') as orig:
|
|
self.maxDiff = None
|
|
self.assertEqual(result.read(), orig.read())
|
|
|
|
|
|
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(failfast=False)
|