Пример #1
0
    def mutate_and_get_payload(cls,
                               root,
                               info,
                               owner,
                               labbook_name,
                               manager,
                               packages,
                               client_mutation_id=None):
        username = get_logged_in_username()
        lb = InventoryManager().load_labbook(username,
                                             owner,
                                             labbook_name,
                                             author=get_logged_in_author())

        with lb.lock():
            cm = ComponentManager(lb)
            cm.remove_packages(package_manager=manager, package_names=packages)

        return RemovePackageComponents(success=True)
Пример #2
0
    def test_remove_package_errors(self, mock_config_with_repo):
        """Test removing a package with expected errors"""
        lb = create_tmp_labbook(mock_config_with_repo[0])
        cm = ComponentManager(lb)

        # Try removing package that doesn't exist
        with pytest.raises(ValueError):
            cm.remove_packages('apt', ['ack'])

        # Add a package as if it's from the base
        pkgs = [{
            "manager": "pip3",
            "package": "requests",
            "version": "2.18.2"
        }]
        cm.add_packages('pip3', pkgs, from_base=True)

        # Try removing package that you can't because it comes from a base
        with pytest.raises(ValueError):
            cm.remove_packages('pip3', ['requests'])
Пример #3
0
    def test_remove_package(self, mock_config_with_repo):
        """Test removing a package such as one from apt-get or pip3. """
        lb = create_tmp_labbook(mock_config_with_repo[0])
        labbook_dir = lb.root_dir
        cm = ComponentManager(lb)

        # Add some sample components
        pkgs = [{
            "manager": "pip3",
            "package": "requests",
            "version": "2.18.2"
        }, {
            "manager": "pip3",
            "package": "docker",
            "version": "0.5"
        }]
        cm.add_packages('pip3', pkgs)

        pkgs = [{
            "manager": "apt",
            "package": "ack",
            "version": "1.5"
        }, {
            "manager": "apt",
            "package": "docker",
            "version": "1.3"
        }]
        cm.add_packages('apt', pkgs)

        pkgs = [{
            "manager": "pip3",
            "package": "matplotlib",
            "version": "2.0.0"
        }]
        cm.add_packages('pip3', pkgs, from_base=True)

        package_path = os.path.join(lb._root_dir, '.gigantum', 'env',
                                    'package_manager')
        assert os.path.exists(package_path)

        # Ensure all four packages exist
        assert os.path.exists(os.path.join(package_path, "apt_ack.yaml"))
        assert os.path.exists(os.path.join(package_path, "pip3_requests.yaml"))
        assert os.path.exists(os.path.join(package_path, "apt_docker.yaml"))
        assert os.path.exists(os.path.join(package_path, "pip3_docker.yaml"))
        assert os.path.exists(
            os.path.join(package_path, "pip3_matplotlib.yaml"))

        # Remove packages
        cm.remove_packages("apt", ["ack", "docker"])
        cm.remove_packages("pip3", ["requests", "docker"])

        with pytest.raises(ValueError):
            cm.remove_packages("pip3", ["matplotlib"])

        # Ensure files are gone
        assert not os.path.exists(os.path.join(package_path, "apt_ack.yaml"))
        assert not os.path.exists(
            os.path.join(package_path, "pip3_requests.yaml"))
        assert not os.path.exists(os.path.join(package_path,
                                               "apt_docker.yaml"))
        assert not os.path.exists(
            os.path.join(package_path, "pip3_docker.yaml"))
        assert os.path.exists(
            os.path.join(package_path, "pip3_matplotlib.yaml"))

        # Ensure git is clean
        status = lb.git.status()
        assert status['untracked'] == []
        assert status['staged'] == []
        assert status['unstaged'] == []

        # Ensure activity is being written
        log = lb.git.log()
        assert "_GTM_ACTIVITY_START_" in log[0]["message"]
        assert 'Removed 2 pip3 managed package(s)' in log[0]["message"]