mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-09-11 15:13:27 +02:00
Python is heavily based on its core data types, and dict is one of the more important ones. Even classes are basically a wrapper around a dict. This converts metadata.App to be a subclass of dict so it can behave like a dict when being dumped and loaded. This makes its drastically easier to use different data formats for build metadata and for sending data to the client. This approach will ultimately mean we no longer have to maintain custom parsing and dumping code. This also means then that the YAML/JSON field names will not have spaces in them, and they will match exactly what it used as the dict keys once the data is parsed, as well as matching exactly the instance attribute names: * CurrentVersion: 1.2.6 * app['CurrentVersion'] == '1.2.6' * app.CurrentVersion == '1.2.6' Inspired by: https://goodcode.io/articles/python-dict-object/
58 lines
1.8 KiB
Python
Executable File
58 lines
1.8 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 requests
|
|
import sys
|
|
import unittest
|
|
|
|
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
|
|
# work around the syntax error from: import fdroidserver.import
|
|
import import_proxy
|
|
|
|
|
|
class ImportTest(unittest.TestCase):
|
|
'''fdroid import'''
|
|
|
|
def test_import_gitlab(self):
|
|
os.chdir(os.path.dirname(__file__))
|
|
# FDroidPopen needs some config to work
|
|
config = dict()
|
|
fdroidserver.common.fill_config_defaults(config)
|
|
fdroidserver.common.config = config
|
|
|
|
url = 'https://gitlab.com/fdroid/ci-test-app'
|
|
r = requests.head(url)
|
|
if r.status_code != 200:
|
|
print("ERROR", url, 'unreachable (', r.status_code, ')')
|
|
print('Skipping ImportTest!')
|
|
return
|
|
|
|
app = fdroidserver.metadata.App()
|
|
app.UpdateCheckMode = "Tags"
|
|
root_dir, src_dir = import_proxy.get_metadata_from_url(app, url)
|
|
self.assertEqual(app.RepoType, 'git')
|
|
self.assertEqual(app.WebSite, 'https://gitlab.com/fdroid/ci-test-app')
|
|
self.assertEqual(app.Repo, 'https://gitlab.com/fdroid/ci-test-app.git')
|
|
|
|
|
|
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(ImportTest))
|
|
unittest.main()
|