Loading lib/galaxy/tool_util/deps/conda_util.py +2 −0 Original line number Diff line number Diff line Loading @@ -517,6 +517,8 @@ def best_search_result( Return ``None`` if no results match. """ # Cannot specify the version here (i.e. conda_target.package_specifier) # because if the version is not found, the exec_search() call would fail. search_args = [conda_target.package] try: res = conda_context.exec_search(search_args, json=True, offline=offline, platform=platform) Loading test/unit/tool_util/test_conda_resolution.py +28 −5 Original line number Diff line number Diff line Loading @@ -2,9 +2,13 @@ import os import shutil from tempfile import mkdtemp from galaxy.tool_util.deps import ( conda_util, DependencyManager, from galaxy.tool_util.deps import DependencyManager from galaxy.tool_util.deps.conda_util import ( best_search_result, CondaContext, CondaTarget, install_conda, installed_conda_targets, ) from galaxy.tool_util.deps.requirements import ToolRequirement from galaxy.tool_util.deps.resolvers.conda import CondaDependencyResolver Loading Loading @@ -51,11 +55,30 @@ def test_against_conda_prefix_regression(): use_path_exec=False, # For the test ensure this is always a clean install ) conda_context = resolver.conda_context assert len(list(conda_util.installed_conda_targets(conda_context))) == 0 assert len(list(installed_conda_targets(conda_context))) == 0 req = ToolRequirement(name="samtools", version="0.1.16", type="package") dependency = resolver.resolve(req, job_directory=job_dir) assert dependency.shell_commands() is not None # install should not fail anymore installed_targets = list(conda_util.installed_conda_targets(conda_context)) installed_targets = list(installed_conda_targets(conda_context)) assert len(installed_targets) > 0 finally: shutil.rmtree(base_path) @external_dependency_management def test_best_search_result(tmp_path) -> None: conda_context = CondaContext( conda_prefix=os.path.join(tmp_path, "_conda"), condarc_override=os.path.join(tmp_path, "_condarc") ) install_conda(conda_context) (hit, exact) = best_search_result(CondaTarget("samtools"), conda_context) assert hit["name"] == "samtools" assert exact is True (hit, exact) = best_search_result(CondaTarget("samtools", version="1.3.1"), conda_context) assert hit["name"] == "samtools" assert hit["version"] == "1.3.1" assert exact is True # Search non-existent version (hit, exact) = best_search_result(CondaTarget("samtools", version="1.16"), conda_context) assert hit["name"] == "samtools" assert exact is False Loading
lib/galaxy/tool_util/deps/conda_util.py +2 −0 Original line number Diff line number Diff line Loading @@ -517,6 +517,8 @@ def best_search_result( Return ``None`` if no results match. """ # Cannot specify the version here (i.e. conda_target.package_specifier) # because if the version is not found, the exec_search() call would fail. search_args = [conda_target.package] try: res = conda_context.exec_search(search_args, json=True, offline=offline, platform=platform) Loading
test/unit/tool_util/test_conda_resolution.py +28 −5 Original line number Diff line number Diff line Loading @@ -2,9 +2,13 @@ import os import shutil from tempfile import mkdtemp from galaxy.tool_util.deps import ( conda_util, DependencyManager, from galaxy.tool_util.deps import DependencyManager from galaxy.tool_util.deps.conda_util import ( best_search_result, CondaContext, CondaTarget, install_conda, installed_conda_targets, ) from galaxy.tool_util.deps.requirements import ToolRequirement from galaxy.tool_util.deps.resolvers.conda import CondaDependencyResolver Loading Loading @@ -51,11 +55,30 @@ def test_against_conda_prefix_regression(): use_path_exec=False, # For the test ensure this is always a clean install ) conda_context = resolver.conda_context assert len(list(conda_util.installed_conda_targets(conda_context))) == 0 assert len(list(installed_conda_targets(conda_context))) == 0 req = ToolRequirement(name="samtools", version="0.1.16", type="package") dependency = resolver.resolve(req, job_directory=job_dir) assert dependency.shell_commands() is not None # install should not fail anymore installed_targets = list(conda_util.installed_conda_targets(conda_context)) installed_targets = list(installed_conda_targets(conda_context)) assert len(installed_targets) > 0 finally: shutil.rmtree(base_path) @external_dependency_management def test_best_search_result(tmp_path) -> None: conda_context = CondaContext( conda_prefix=os.path.join(tmp_path, "_conda"), condarc_override=os.path.join(tmp_path, "_condarc") ) install_conda(conda_context) (hit, exact) = best_search_result(CondaTarget("samtools"), conda_context) assert hit["name"] == "samtools" assert exact is True (hit, exact) = best_search_result(CondaTarget("samtools", version="1.3.1"), conda_context) assert hit["name"] == "samtools" assert hit["version"] == "1.3.1" assert exact is True # Search non-existent version (hit, exact) = best_search_result(CondaTarget("samtools", version="1.16"), conda_context) assert hit["name"] == "samtools" assert exact is False