Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)