Unverified Commit cc35a28a authored by Nicola Soranzo's avatar Nicola Soranzo
Browse files

Add test for conda ``best_search_result()``

parent a0d6e87f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
+28 −5
Original line number Diff line number Diff line
@@ -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
@@ -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