示例#1
0
 def test_latest_versions_bad_pkg(self, build_lb_image_for_env_conda):
     """Test latest_version command"""
     mrg = Conda3PackageManager()
     lb = build_lb_image_for_env_conda[0]
     username = build_lb_image_for_env_conda[1]
     with pytest.raises(ValueError):
         mrg.latest_versions(["asdasdfdasdff", "cdutil"], lb, username)
示例#2
0
 def test_list_versions_badpackage(self, build_lb_image_for_env_conda):
     """Test list_versions command"""
     mrg = Conda3PackageManager()
     lb = build_lb_image_for_env_conda[0]
     username = build_lb_image_for_env_conda[1]
     with pytest.raises(ValueError):
         mrg.list_versions("gigantumasdfasdfasdf", lb, username)
示例#3
0
    def test_is_valid_errors(self, build_lb_image_for_env_conda):
        """Test list_versions command"""
        pkgs = [{"manager": "conda3", "package": "numpy", "version": "1.14.2"},
                {"manager": "conda3", "package": "plotly", "version": "100.00"},
                {"manager": "conda3", "package": "cdutil", "version": ""},
                {"manager": "conda3", "package": "asdfasdfasdf", "version": ""}]

        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        result = mrg.validate_packages(pkgs, lb, username)

        assert result[0].package == "numpy"
        assert result[0].version == "1.14.2"
        assert result[0].error is False

        assert result[1].package == "plotly"
        assert result[1].version == "100.00"
        assert result[1].error is True

        assert result[2].package == "cdutil"
        assert result[2].version == "8.1"
        assert result[2].error is False

        assert result[3].package == "asdfasdfasdf"
        assert result[3].version == ""
        assert result[3].error is True
示例#4
0
 def test_search_empty(self, build_lb_image_for_env_conda):
     """Test search command with no result"""
     mrg = Conda3PackageManager()
     lb = build_lb_image_for_env_conda[0]
     username = build_lb_image_for_env_conda[1]
     result = mrg.search("asdffdghdfghdraertasdfsadfa", lb, username)
     assert type(result) == list
     assert len(result) == 0
示例#5
0
 def test_list_versions(self, build_lb_image_for_env_conda):
     """Test list_versions command"""
     mrg = Conda3PackageManager()
     lb = build_lb_image_for_env_conda[0]
     username = build_lb_image_for_env_conda[1]
     result = mrg.list_versions("python-coveralls", lb, username)
     assert len(result) == 4
     assert result[2] == "2.7.0"
     assert result[0] == "2.9.1"
示例#6
0
 def test_search_no_wildcard(self, build_lb_image_for_env_conda):
     """Test search command"""
     mrg = Conda3PackageManager()
     lb = build_lb_image_for_env_conda[0]
     username = build_lb_image_for_env_conda[1]
     result = mrg.search("reque", lb, username)
     assert type(result) == list
     assert type(result[0]) == str
     assert len(result) > 6
     assert "requests" in result
示例#7
0
    def test_latest_versions(self, build_lb_image_for_env_conda):
        """Test latest_version command"""
        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        pkgs = ["cdutil", "python-coveralls", "nltk"]
        result = mrg.latest_versions(pkgs, lb, username)

        assert result[0] == '8.1'  # cdutil
        assert result[1] == '2.9.1'  # python-coveralls
        assert result[2] == '3.2.5'  # nltk
示例#8
0
    def test_generate_docker_install_snippet_single(self):
        """Test generate_docker_install_snippet command
        """
        mrg = Conda3PackageManager()
        packages = [{'name': 'mypackage', 'version': '3.1.4'}]

        result = mrg.generate_docker_install_snippet(packages)
        assert result == ['RUN conda install -yq mypackage=3.1.4']

        result = mrg.generate_docker_install_snippet(packages, single_line=True)
        assert result == ['RUN conda install -yq mypackage=3.1.4']
示例#9
0
def get_package_manager(manager: str) -> PackageManager:
    """Helper class to instantiate a package manager based on manager string"""
    if manager in ["pip2", "pip3", "pip"]:
        return PipPackageManager()
    elif manager == "conda2":
        return Conda2PackageManager()
    elif manager == "conda3":
        return Conda3PackageManager()
    elif manager in ["apt", "apt-get"]:
        return AptPackageManager()
    else:
        raise ValueError(f"Unsupported package manager `{manager}`")
示例#10
0
    def test_latest_version(self, build_lb_image_for_env_conda):
        """Test latest_version command"""
        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]

        # Note, "python-coveralls" is an installed package at 2.7.0 with latest being 2.9.1
        result = mrg.latest_version("python-coveralls", lb, username)
        assert result == '2.9.1'

        # python-coveralls is a non-installed package
        result = mrg.latest_version("cdutil", lb, username)
        assert result == '8.1'
示例#11
0
    def test_list_available_updates(self, build_lb_image_for_env_conda):
        """Test list_available_updates command

        Note, if the contents of the container change, this test will break and need to be updated. Because of this,
        only limited asserts are made to make sure things are coming back in a reasonable format
        """
        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        result = mrg.list_available_updates(lb, username)

        # TODO: Right now list_available_updates() is a noop and can possibly be removed
        assert result == []
示例#12
0
    def test_list_installed_packages(self, build_lb_image_for_env_conda):
        """Test list_installed_packages command

        Note, if the contents of the container change, this test will break and need to be updated. Because of this,
        only limited asserts are made to make sure things are coming back in a reasonable format
        """
        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        result = mrg.list_installed_packages(lb, username)

        assert type(result) == list
        assert len(result) >= 14
        assert type(result[0]) == dict
        assert type(result[0]['name']) == str
        assert type(result[0]['version']) == str
示例#13
0
    def test_is_valid_good(self, build_lb_image_for_env_conda):
        """Test valid packages command"""
        pkgs = [{"manager": "conda3", "package": "nltk", "version": "3.2.2"},
                {"manager": "conda3", "package": "cdutil", "version": ""}]

        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        result = mrg.validate_packages(pkgs, lb, username)

        assert result[0].package == "nltk"
        assert result[0].version == "3.2.2"
        assert result[0].error is False

        assert result[1].package == "cdutil"
        assert result[1].version == "8.1"
        assert result[1].error is False
示例#14
0
    def test_package_metadata(self, build_lb_image_for_env_conda):
        """Test getting package metadata"""
        mrg = Conda3PackageManager()
        lb = build_lb_image_for_env_conda[0]
        username = build_lb_image_for_env_conda[1]
        result = mrg.get_packages_metadata(['nltk', 'cdutil', 'numpy', 'sadfasfasf'], lb, username)

        assert len(result) == 4
        assert result[0].package == "nltk"
        assert result[0].description == 'Natural Language Toolkit'
        assert result[0].docs_url == 'http://www.nltk.org/'
        assert result[0].latest_version == '3.2.5'
        assert result[1].package == "cdutil"
        assert result[1].description == 'A set of tools to manipulate climate data'
        assert result[1].docs_url == 'http://anaconda.org/conda-forge/cdutil'
        assert result[1].latest_version == '8.1'
        assert result[2].package == "numpy"
        assert result[2].description == 'Array processing for numbers, strings, records, and objects.'
        assert result[2].docs_url == 'https://docs.scipy.org/doc/numpy/reference/'
        assert isinstance(result[2].docs_url, str) is True
        assert result[3].package == "sadfasfasf"
        assert result[3].description is None
        assert result[3].docs_url is None
        assert result[3].latest_version is None