From 40b9dee2ea0759c3203df61e19ad8d92c46a9cba Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Mon, 6 Dec 2021 17:31:40 +0000 Subject: [PATCH] Don't skip and fix `TestCliInterface` unit tests in `app` package --- lib/galaxy/jobs/runners/util/cli/__init__.py | 50 +++----------------- lib/galaxy/jobs/runners/util/cli/factory.py | 4 +- packages/app/test-requirements.txt | 1 + 3 files changed, 8 insertions(+), 47 deletions(-) diff --git a/lib/galaxy/jobs/runners/util/cli/__init__.py b/lib/galaxy/jobs/runners/util/cli/__init__.py index 8aecd72f5c3..5e199fe787b 100644 --- a/lib/galaxy/jobs/runners/util/cli/__init__.py +++ b/lib/galaxy/jobs/runners/util/cli/__init__.py @@ -1,14 +1,8 @@ """ """ -import importlib import json -import pkgutil -from glob import glob -from os import getcwd -from os.path import ( - basename, - join -) + +from galaxy.util.plugin_config import plugins_dict DEFAULT_SHELL_PLUGIN = 'LocalShell' @@ -22,45 +16,13 @@ class CliInterface: them to specified parameters. """ - def __init__(self, code_dir='lib'): + def __init__(self): """ """ - def __load_from_code_dir(module_path): - module_pattern = join(join(getcwd(), code_dir, *module_path.split('.')), '*.py') - for file in glob(module_pattern): - if basename(file).startswith('_'): - continue - module_name = f"{module_path}.{basename(file).rsplit('.py', 1)[0]}" - module = __import__(module_name) - for comp in module_name.split(".")[1:]: - module = getattr(module, comp) - yield module - - def __load_from_path(module_path): - base_module = importlib.import_module(module_path) - for module_info in pkgutil.iter_modules(base_module.__path__): - module = importlib.import_module(f'{module_path}.{module_info.name}') - yield module - - def __load(module_path, d): - if code_dir is not None: - module_generator = __load_from_code_dir - else: - module_generator = __load_from_path - for module in module_generator(module_path): - for name in module.__all__: - try: - d[name] = getattr(module, name) - except TypeError: - raise TypeError(f"Invalid type for name {name}") - - self.cli_shells = {} - self.cli_job_interfaces = {} - self.active_cli_shells = {} - module_prefix = self.__module__ - __load(f'{module_prefix}.shell', self.cli_shells) - __load(f'{module_prefix}.job', self.cli_job_interfaces) + self.cli_shells = plugins_dict(f"{module_prefix}.shell", "__name__") + self.cli_job_interfaces = plugins_dict(f"{module_prefix}.job", "__name__") + self.active_cli_shells = {} def get_plugins(self, shell_params, job_params): """ diff --git a/lib/galaxy/jobs/runners/util/cli/factory.py b/lib/galaxy/jobs/runners/util/cli/factory.py index 4fa28ce1c8f..64f8cb944f9 100644 --- a/lib/galaxy/jobs/runners/util/cli/factory.py +++ b/lib/galaxy/jobs/runners/util/cli/factory.py @@ -3,17 +3,15 @@ try: CliInterface, split_params ) - code_dir = 'lib' except ImportError: from pulsar.managers.util.cli import ( # type: ignore[no-redef] CliInterface, split_params ) - code_dir = '.' def build_cli_interface(): - return CliInterface(code_dir=code_dir) + return CliInterface() def get_shell(params): diff --git a/packages/app/test-requirements.txt b/packages/app/test-requirements.txt index 6565ec31f09..1fd0bf58c90 100644 --- a/packages/app/test-requirements.txt +++ b/packages/app/test-requirements.txt @@ -1,2 +1,3 @@ +mock-ssh-server pytest testfixtures