def _get_packages(self, repositories, requirements): if requirements: forest = objects.PackagesForest() package_relations = [] load_package_relations( requirements.get('packages'), package_relations.append ) packages_traverse = get_packages_traverse( requirements.get('repositories'), package_relations.append ) for repo in repositories: tree = forest.add_tree(repo.priority) self.controller.load_packages( repo, compose( tree.add, packages_traverse ) ) mandatory = requirements.get('mandatory') if mandatory: for package in tree.mandatory_packages: package_relations.append( PackageRelation.from_args( (package.name, _MANDATORY[requirements['mandatory']], package.version))) return forest.get_packages(package_relations) packages = set() self._load_packages(repositories, packages.add) return packages
def test_load_package_relations(self): data = [{"name": "test1"}, {"name": "test2", "versions": ["> 1", "< 3"]}] expected = [ str(generator.gen_relation("test1")), str(generator.gen_relation("test2", ["<", "3"])), str(generator.gen_relation("test2", [">", "1"])), ] actual = [] loaders.load_package_relations(data, lambda x: actual.append(str(x))) self.assertItemsEqual(expected, actual) actual = [] loaders.load_package_relations(None, actual.append) self.assertEqual([], actual)
def test_load_package_relations(self): data = [ { 'name': 'test1' }, { 'name': 'test2', 'versions': ['> 1', '< 3'] }, ] expected = [ str(generator.gen_relation('test1')), str(generator.gen_relation('test2', ['<', '3'])), str(generator.gen_relation('test2', ['>', '1'])), ] actual = [] loaders.load_package_relations(data, lambda x: actual.append(str(x))) self.assertItemsEqual(expected, actual) actual = [] loaders.load_package_relations(None, actual.append) self.assertEqual([], actual)