From 707930ce0a708ab495f865ff8904b3ba2f1b8cb5 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 6 Aug 2015 00:55:16 +0200 Subject: [PATCH] add a basic test of `fdroid import` --- tests/import.TestCase | 50 +++++++++++++++++++++++++++++++++++++++++++ tests/import_proxy.py | 26 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100755 tests/import.TestCase create mode 100644 tests/import_proxy.py diff --git a/tests/import.TestCase b/tests/import.TestCase new file mode 100755 index 00000000..adcbe1a2 --- /dev/null +++ b/tests/import.TestCase @@ -0,0 +1,50 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +# http://www.drdobbs.com/testing/unit-testing-with-python/240165163 + +import inspect +import optparse +import os +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): + # FDroidPopen needs some config to work + fdroidserver.common.config = dict() + fdroidserver.common.config['sdk_path'] = '/fake/path/to/android-sdk' + + url = 'https://gitlab.com/fdroid/fdroidclient' + apps = dict() + appid, app = fdroidserver.metadata.get_default_app_info_list(apps) + app['Update Check Mode'] = "Tags" + root_dir, src_dir = import_proxy.get_metadata_from_url(app, url) + self.assertEquals(app['Repo Type'], 'git') + self.assertEquals(app['Web Site'], 'https://gitlab.com/fdroid/fdroidclient') + self.assertEquals(app['Repo'], 'https://gitlab.com/fdroid/fdroidclient.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() diff --git a/tests/import_proxy.py b/tests/import_proxy.py new file mode 100644 index 00000000..ce24a50f --- /dev/null +++ b/tests/import_proxy.py @@ -0,0 +1,26 @@ +# workaround the syntax error from: import fdroidserver.import + +import inspect +import os +import sys + +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) + +class Options: + def __init__(self): + self.rev = None + self.subdir = None + +module = __import__('fdroidserver.import') +for name, obj in inspect.getmembers(module): + if name == 'import': + get_metadata_from_url = obj.get_metadata_from_url + obj.options = Options() + options = obj.options + break + +globals().update(vars(module))