46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from importlib import import_module
|
|
import pkgutil
|
|
from pathlib import Path
|
|
import os
|
|
MODULE_PATH = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
#print(MODULE_PATH)
|
|
|
|
|
|
__cls_cache = dict()
|
|
|
|
def factory(name: str, **kwargs):
|
|
name = name + '_tester'
|
|
mod = import_module('.' + name, package='tester')
|
|
tester_cls = getattr(mod, name)
|
|
instance = tester_cls(**kwargs)
|
|
return instance
|
|
|
|
|
|
def factory_cls(name: str, **kwargs):
|
|
name = str(name) + '_tester'
|
|
if name in __cls_cache:
|
|
return __cls_cache[name]
|
|
else:
|
|
mod = import_module('.' + name, package='tester')
|
|
tester_cls = getattr(mod, name)
|
|
__cls_cache[name] = tester_cls
|
|
return tester_cls
|
|
|
|
|
|
def analyse_artifacts(tool_name: str, path: Path, apk_filename: str):
|
|
tester_cls = factory_cls(tool_name)
|
|
return tester_cls.analyse_artifacts(path, apk_filename)
|
|
|
|
|
|
def check_success(tool_name: str, path: Path, apk_filename: str):
|
|
tester_cls = factory_cls(tool_name)
|
|
return tester_cls.check_success(path, apk_filename)
|
|
|
|
|
|
def get_all_testers():
|
|
tmp = []
|
|
for importer, modname, ispkg in pkgutil.iter_modules([MODULE_PATH]):
|
|
if (ispkg is False) and ('abstract' not in modname) and ('_tester' in modname):
|
|
tmp.append(modname)
|
|
return tmp
|