Example #1
0
    def get_unresolved_dependencies(self, repos_data):
        """Gets list of unresolved dependencies for repository(es).

        :param repos_data: The list of repository descriptions
        :return: list of unresolved dependencies
        """
        packages = PackagesTree()
        self._load_packages(self._load_repositories(repos_data), packages.add)
        return packages.get_unresolved_dependencies()
Example #2
0
    def get_unresolved_dependencies(self, repos_data):
        """Gets list of unresolved dependencies for repository(es).

        :param repos_data: The list of repository descriptions
        :return: list of unresolved dependencies
        """
        packages = PackagesTree()
        self._load_packages(self._load_repositories(repos_data), packages.add)
        return packages.get_unresolved_dependencies()
    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_get_unresolved_dependencies(self):
     tree = PackagesTree()
     tree.add(generator.gen_package(
         1, requires=[generator.gen_relation("unresolved")]))
     tree.add(generator.gen_package(2, requires=None))
     tree.add(generator.gen_package(
         3, requires=[generator.gen_relation("package1")]
     ))
     unresolved = tree.get_unresolved_dependencies()
     self.assertItemsEqual(
         ["unresolved"],
         (x.name for x in unresolved)
     )
    def test_get_unresolved_dependencies(self):
        ptree = PackagesTree()
        ptree.add(generator.gen_package(
            1, requires=[generator.gen_relation("unresolved")]))
        ptree.add(generator.gen_package(2, requires=None))
        ptree.add(generator.gen_package(
            3, requires=[generator.gen_relation("package1")]
        ))
        ptree.add(generator.gen_package(
            4,
            requires=[generator.gen_relation("loop")],
            obsoletes=[generator.gen_relation("loop", ["le", 1])]
        ))

        unresolved = ptree.get_unresolved_dependencies()
        self.assertItemsEqual(
            ["loop", "unresolved"],
            (x.name for x in unresolved)
        )
    def test_find_package(self):
        tree = PackagesTree()
        p1 = generator.gen_package(idx=1, version=1)
        p2 = generator.gen_package(idx=1, version=2)
        tree.add(p1)
        tree.add(p2)

        self.assertIs(p1, tree.find(p1.name, VersionRange("<", p2.version)))
        self.assertIs(p2, tree.find(p1.name, VersionRange(">=", p1.version)))
        self.assertIsNone(tree.find(p1.name, VersionRange(">", p2.version)))
Example #8
0
    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)
        )
    def test_get_unresolved_dependencies_with_main(self):
        ptree = PackagesTree()
        ptree.add(generator.gen_package(
            1, requires=[generator.gen_relation("unresolved")]))
        ptree.add(generator.gen_package(2, requires=None))
        ptree.add(generator.gen_package(
            3, requires=[generator.gen_relation("package1")]
        ))
        ptree.add(generator.gen_package(
            4,
            requires=[generator.gen_relation("package5")]
        ))
        main = Index()
        main.add(generator.gen_package(5, requires=[
            generator.gen_relation("package6")
        ]))

        unresolved = ptree.get_unresolved_dependencies(main)
        self.assertItemsEqual(
            ["unresolved"],
            (x.name for x in unresolved)
        )
Example #10
0
    def get_unresolved_dependencies(self, origin, main=None):
        """Gets list of unresolved dependencies for repository(es).

        :param origin: The list of repository`s URLs
        :param main: The main repository(es) URL
        :return: list of unresolved dependencies
        """
        packages = PackagesTree()
        self.controller.load_packages(
            self._get_repositories(origin),
            packages.add
        )

        if main is not None:
            base = Index()
            self.controller.load_packages(
                self._get_repositories(main),
                base.add
            )
        else:
            base = None

        return packages.get_unresolved_dependencies(base)
 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_add(self):
     tree = PackagesTree()
     pkg = generator.gen_package(version=1, mandatory=True)
     tree.add(pkg)
     self.assertIs(pkg, tree.find(pkg.name, VersionRange('=', pkg.version)))
     self.assertIs(
         pkg.obsoletes[0],
         tree.obsoletes[pkg.obsoletes[0].name][(pkg.name, pkg.version)]
     )
     self.assertIs(
         pkg.provides[0],
         tree.provides[pkg.provides[0].name][(pkg.name, pkg.version)]
     )
     tree.add(generator.gen_package(version=1, mandatory=False))
     self.assertItemsEqual([pkg], tree.mandatory_packages)
 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 test_find_provides(self):
        tree = PackagesTree()
        p1 = generator.gen_package(
            version=1, obsoletes=[generator.gen_relation('provide', ('<', 2))]
        )
        tree.add(p1)

        self.assertIs(
            p1, tree.find("provide", VersionRange("<=", 2))
        )
        self.assertIsNone(
            tree.find("provide", VersionRange(">", 2))
        )
    def test_find_obsolete(self):
        tree = PackagesTree()
        p1 = generator.gen_package(
            version=1, obsoletes=[generator.gen_relation('obsolete', ('<', 2))]
        )
        p2 = generator.gen_package(
            version=2, obsoletes=[generator.gen_relation('obsolete', ('<', 2))]
        )
        tree.add(p1)
        tree.add(p2)

        self.assertEqual(
            [p1, p2], tree.find_all("obsolete", VersionRange("<=", 2))
        )
        self.assertIsNone(
            tree.find("obsolete", VersionRange(">", 2))
        )