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)
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'])
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"]