def test_warning_if_unresolved(self): ptree = PackagesTree() ptree.add(generator.gen_package( 1, requires=None)) with warnings.catch_warnings(record=True) as log: ptree.get_minimal_subset( None, [generator.gen_relation("package2")] ) self.assertIn("package2", str(log[0]))
def test_get_minimal_subset_with_master(self): ptree = PackagesTree() ptree.add(generator.gen_package(1, requires=None)) ptree.add(generator.gen_package(2, requires=None)) ptree.add(generator.gen_package(3, requires=None)) ptree.add(generator.gen_package( 4, requires=[generator.gen_relation("package1")] )) master = Index() master.add(generator.gen_package(1, requires=None)) master.add(generator.gen_package( 5, requires=[generator.gen_relation( "package10", alternative=generator.gen_relation("package4") )] )) unresolved = set([generator.gen_relation("package3")]) resolved = ptree.get_minimal_subset(master, unresolved) self.assertItemsEqual( ["package3", "package4"], (x.name for x in resolved) )
def test_mandatory_packages_always_included(self): ptree = PackagesTree() ptree.add(generator.gen_package(1, requires=None, mandatory=True)) ptree.add(generator.gen_package(2, requires=None)) ptree.add(generator.gen_package(3, requires=None)) unresolved = set([generator.gen_relation("package3")]) resolved = ptree.get_minimal_subset(None, unresolved) self.assertItemsEqual( ["package3", "package1"], (x.name for x in resolved) )
def test_get_minimal_subset_without_master(self): ptree = PackagesTree() ptree.add(generator.gen_package(1, requires=None)) ptree.add(generator.gen_package(2, requires=None)) ptree.add(generator.gen_package( 3, requires=[generator.gen_relation("package1")] )) unresolved = set([generator.gen_relation("package3")]) resolved = ptree.get_minimal_subset(None, unresolved) self.assertItemsEqual( ["package3", "package1"], (x.name for x in resolved) )
def _get_packages(self, repositories, master, requirements): """Gets the list of packages according to master and requirements.""" if master is None and requirements is None: packages = set() self.controller.load_packages(repositories, packages.add) return packages packages = PackagesTree() self.controller.load_packages(repositories, packages.add) if master is not None: main_index = Index() self.controller.load_packages( self._get_repositories(master), main_index.add ) else: main_index = None return packages.get_minimal_subset( main_index, self._parse_requirements(requirements) )