mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-04 02:00:11 +02:00
add some basic tests for scanner.main
This commit is contained in:
parent
42d9ac446c
commit
ab579be6b5
@ -550,7 +550,7 @@ def main():
|
|||||||
appids = []
|
appids = []
|
||||||
for apk in options.appid:
|
for apk in options.appid:
|
||||||
if os.path.isfile(apk):
|
if os.path.isfile(apk):
|
||||||
count = scan_binary(apk, exodus)
|
count = scanner.scan_binary(apk, exodus)
|
||||||
if count > 0:
|
if count > 0:
|
||||||
logging.warning(
|
logging.warning(
|
||||||
_('Scanner found {count} problems in {apk}:').format(
|
_('Scanner found {count} problems in {apk}:').format(
|
||||||
@ -565,6 +565,7 @@ def main():
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Read all app and srclib metadata
|
# Read all app and srclib metadata
|
||||||
|
|
||||||
allapps = metadata.read_metadata()
|
allapps = metadata.read_metadata()
|
||||||
apps = common.read_app_args(appids, allapps, True)
|
apps = common.read_app_args(appids, allapps, True)
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ import textwrap
|
|||||||
import unittest
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
import yaml
|
import yaml
|
||||||
|
import collections
|
||||||
|
import pathlib
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
localmodule = os.path.realpath(
|
localmodule = os.path.realpath(
|
||||||
@ -26,6 +28,7 @@ import fdroidserver.build
|
|||||||
import fdroidserver.common
|
import fdroidserver.common
|
||||||
import fdroidserver.metadata
|
import fdroidserver.metadata
|
||||||
import fdroidserver.scanner
|
import fdroidserver.scanner
|
||||||
|
from testcommon import TmpCwd
|
||||||
|
|
||||||
|
|
||||||
class ScannerTest(unittest.TestCase):
|
class ScannerTest(unittest.TestCase):
|
||||||
@ -431,6 +434,52 @@ class Test_load_exodus_trackers_signatures(unittest.TestCase):
|
|||||||
self.assertEqual(result_regex, "mocked return value")
|
self.assertEqual(result_regex, "mocked return value")
|
||||||
|
|
||||||
|
|
||||||
|
class Test_main(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.args = ["com.example.app", "local/additional.apk", "another.apk"]
|
||||||
|
self.exit_func = mock.Mock()
|
||||||
|
self.read_app_args_func = mock.Mock(return_value={})
|
||||||
|
self.scan_binary_func = mock.Mock(return_value=0)
|
||||||
|
|
||||||
|
def test_parsing_appid(self):
|
||||||
|
"""
|
||||||
|
This test verifies that app id get parsed correctly
|
||||||
|
(doesn't test how they get processed)
|
||||||
|
"""
|
||||||
|
self.args = ["com.example.app"]
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir), mock.patch(
|
||||||
|
"sys.exit", self.exit_func
|
||||||
|
), mock.patch("sys.argv", ["fdroid scanner", *self.args]), mock.patch(
|
||||||
|
"fdroidserver.common.read_app_args", self.read_app_args_func
|
||||||
|
), mock.patch("fdroidserver.scanner.scan_binary", self.scan_binary_func):
|
||||||
|
fdroidserver.scanner.main()
|
||||||
|
|
||||||
|
self.exit_func.assert_not_called()
|
||||||
|
self.read_app_args_func.assert_called_once_with(
|
||||||
|
['com.example.app'], collections.OrderedDict(), True
|
||||||
|
)
|
||||||
|
self.scan_binary_func.assert_not_called()
|
||||||
|
|
||||||
|
def test_parsing_apkpath(self):
|
||||||
|
"""
|
||||||
|
This test verifies that apk paths get parsed correctly
|
||||||
|
(doesn't test how they get processed)
|
||||||
|
"""
|
||||||
|
self.args = ["local.application.apk"]
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir), mock.patch(
|
||||||
|
"sys.exit", self.exit_func
|
||||||
|
), mock.patch("sys.argv", ["fdroid scanner", *self.args]), mock.patch(
|
||||||
|
"fdroidserver.common.read_app_args", self.read_app_args_func
|
||||||
|
), mock.patch("fdroidserver.scanner.scan_binary", self.scan_binary_func):
|
||||||
|
pathlib.Path(self.args[0]).touch()
|
||||||
|
fdroidserver.scanner.main()
|
||||||
|
|
||||||
|
self.exit_func.assert_not_called()
|
||||||
|
self.read_app_args_func.assert_not_called()
|
||||||
|
self.scan_binary_func.assert_called_once_with('local.application.apk', [])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.chdir(os.path.dirname(__file__))
|
os.chdir(os.path.dirname(__file__))
|
||||||
|
|
||||||
@ -450,5 +499,6 @@ if __name__ == "__main__":
|
|||||||
unittest.makeSuite(Test_scan_binary),
|
unittest.makeSuite(Test_scan_binary),
|
||||||
unittest.makeSuite(Test__exodus_compile_signatures),
|
unittest.makeSuite(Test__exodus_compile_signatures),
|
||||||
unittest.makeSuite(Test_load_exodus_trackers_signatures),
|
unittest.makeSuite(Test_load_exodus_trackers_signatures),
|
||||||
|
unittest.makeSuite(Test_main),
|
||||||
])
|
])
|
||||||
unittest.main(failfast=False)
|
unittest.main(failfast=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user