Пример #1
0
    def test_cmp_by_priority_prefer_installed_multi_repositories(self):
        """
        Check packages from multiple repositories are sorted accordingt to
        repository priority.
        """
        numpy_1_6_0 = P("numpy-1.6.0")
        numpy_1_6_1 = P("numpy-1.6.1")
        numpy_1_7_0 = P("numpy-1.7.0")
        i_numpy_1_6_0 = P("numpy-1.6.0")

        remote_repository = Repository([numpy_1_7_0, numpy_1_6_1, numpy_1_6_0],
                                       "remote")
        installed_repository = Repository([i_numpy_1_6_0], "installed")

        r_sorted_packages = [
            i_numpy_1_6_0, numpy_1_7_0, numpy_1_6_1, numpy_1_6_0
        ]

        pool = Pool([installed_repository, remote_repository])
        pool.set_repository_order("installed", "remote")
        policy = DefaultPolicy()

        queue = [numpy_1_7_0, i_numpy_1_6_0, numpy_1_6_0, numpy_1_6_1]

        def _cmp(a, b):
            return policy.cmp_by_priority_prefer_installed(pool, {}, a, b)

        self.assertEqual(r_sorted_packages, sorted_with_cmp(queue, cmp=_cmp))
    def setUp(self):
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0,
            numpy_1_6_0, numpy_1_6_1, numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
Пример #3
0
    def test_simple2(self):
        repo = Repository([self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool([repo])

        self.assertEqual(self.mkl_10_1_0, pool.package_by_id(self.mkl_10_1_0.id))
        self.assertEqual(self.mkl_10_2_0, pool.package_by_id(self.mkl_10_2_0.id))
        self.assertRaises(MissingPackageInfoInPool, lambda: pool.package_by_id(self.mkl_10_3_0.id))
Пример #4
0
    def test_package_by_id_simple(self):
        repo = Repository([self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo)

        self.assertEqual(self.mkl_10_1_0, pool.package_by_id(self.mkl_10_1_0.id))
        self.assertEqual(self.mkl_10_2_0, pool.package_by_id(self.mkl_10_2_0.id))
    def setUp(self):
        repo = Repository(
            [mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
    def test_complex_scenario_1(self):
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0,
            numpy_1_6_0, numpy_1_6_1, numpy_1_7_0, scipy_0_11_0, scipy_0_12_0])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("scipy-0.11.0 | scipy-0.12.0", pool))
        r_rules.add(PackageRule.from_string("-scipy-0.11.0 | -scipy-0.12.0", pool))
        r_rules.add(PackageRule.from_string(
                    "-scipy-0.11.0 | numpy-1.6.0 | numpy-1.6.1 | numpy-1.7.0",
                    pool))
        r_rules.add(PackageRule.from_string(
                    "-scipy-0.12.0 | numpy-1.6.0 | numpy-1.6.1 | numpy-1.7.0",
                    pool))
        r_rules.add(PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.1", pool))
        r_rules.add(PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.0", pool))
        r_rules.add(PackageRule.from_string("-numpy-1.6.0 | -numpy-1.6.1", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.6.1 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.6.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules,
                set(create_install_rules(pool, R("scipy"))))
Пример #7
0
    def test_literal_to_string(self):
        pool = Pool([Repository([self.mkl_10_1_0, self.mkl_10_2_0])])

        self.assertEqual(pool.id_to_string(self.mkl_10_2_0.id),
                         "+mkl-10.2.0")
        self.assertEqual(pool.id_to_string(-self.mkl_10_1_0.id),
                         "-mkl-10.1.0")
Пример #8
0
    def test_what_provides_direct_only(self):
        repo1 = Repository([self.nomkl_numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(set(pool.what_provides(R("numpy"))),
                         set([self.nomkl_numpy_1_7_0]))
Пример #9
0
    def setUp(self):
        self.mkl_10_1_0 = P("mkl-10.1.0")
        self.mkl_10_2_0 = P("mkl-10.2.0")
        self.mkl_10_3_0 = P("mkl-10.3.0")
        self.mkl_11_0_0 = P("mkl-11.0.0")

        self.numpy_1_6_0 = P("numpy-1.6.0; depends (mkl)")
        self.numpy_1_6_1 = P("numpy-1.6.1; depends (mkl)")
        self.numpy_1_7_0 = P("numpy-1.7.0; depends (mkl)")

        self.nomkl_numpy_1_6_0 = P(
            "nomkl_numpy-1.6.0; provides(numpy == 1.6.0)")
        self.nomkl_numpy_1_6_1 = P(
            "nomkl_numpy-1.6.1; provides(numpy == 1.6.1)")
        self.nomkl_numpy_1_7_0 = P(
            "nomkl_numpy-1.7.0; provides(numpy == 1.7.0)")

        self.mkl_numpy_1_6_1 = P(
            "mkl_numpy-1.6.1; provides(numpy == 1.6.1); depends (mkl)")
        self.mkl_numpy_1_7_0 = P(
            "mkl_numpy-1.7.0; provides(numpy == 1.7.0); depends (mkl)")

        self.scipy_0_11_0 = P("scipy-0.11.0; depends (numpy >= 1.4.0)")
        self.scipy_0_12_0 = P("scipy-0.12.0; depends (numpy >= 1.4.0)")

        self.matplotlib_1_2_0 = P("matplotlib-1.2.0; depends (numpy >= 1.6.0)")

        repo = Repository([
            self.mkl_10_1_0, self.mkl_10_2_0, self.mkl_10_3_0, self.mkl_11_0_0,
            self.numpy_1_6_0
        ])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
Пример #10
0
    def test_matches(self):
        pool = Pool()

        self.assertEqual(pool.matches(self.mkl_10_1_0, R("mkl")), MATCH)
        self.assertEqual(pool.matches(self.mkl_10_1_0, R("mkl >= 10.2.0")), MATCH_NAME)
        self.assertEqual(pool.matches(self.mkl_10_1_0, R("numpy")), False)
        self.assertEqual(pool.matches(self.nomkl_numpy_1_7_0, R("numpy")), MATCH_PROVIDE)
    def test_multiple_install_provides(self):
        # Installed requirement has > 1 one provide
        repo = Repository([
            mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_1,
            numpy_1_7_0
        ])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("numpy-1.7.0 | numpy-1.6.1", pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.1", pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.6.1 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules, set(create_install_rules(pool, R("numpy"))))
    def test_multiple_provided_names_single_install_provide(self):
        # Installed requirement has 1 one provide, but multiple provides for
        # the same name are available in the pool
        repo = Repository([
            mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_1,
            numpy_1_7_0
        ])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("numpy-1.7.0", pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.1", pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules,
                         set(create_install_rules(pool, R("numpy == 1.7.0"))))
Пример #13
0
    def test_what_provides_replaces(self):
        scikit_learn = P("scikit_learn-0.12.0")
        sklearn = P("sklearn-0.13.0; replaces (scikit_learn==0.12.0)")
        pool = Pool([Repository([scikit_learn, sklearn])])

        self.assertEqual(set(pool.what_provides(R("sklearn"))), set([sklearn]))
        self.assertEqual(set(pool.what_provides(R("scikit_learn"))), set([sklearn, scikit_learn]))
Пример #14
0
    def setUp(self):
        self.mkl_10_1_0 = P("mkl-10.1.0")
        self.mkl_10_2_0 = P("mkl-10.2.0")
        self.mkl_10_3_0 = P("mkl-10.3.0")
        self.mkl_11_0_0 = P("mkl-11.0.0")

        self.numpy_1_6_0 = P("numpy-1.6.0; depends (mkl)")
        self.numpy_1_6_1 = P("numpy-1.6.1; depends (mkl)")
        self.numpy_1_7_0 = P("numpy-1.7.0; depends (mkl)")

        self.nomkl_numpy_1_6_0 = P("nomkl_numpy-1.6.0; provides(numpy == 1.6.0)")
        self.nomkl_numpy_1_6_1 = P("nomkl_numpy-1.6.1; provides(numpy == 1.6.1)")
        self.nomkl_numpy_1_7_0 = P("nomkl_numpy-1.7.0; provides(numpy == 1.7.0)")

        self.mkl_numpy_1_6_1 = P("mkl_numpy-1.6.1; provides(numpy == 1.6.1); depends (mkl)")
        self.mkl_numpy_1_7_0 = P("mkl_numpy-1.7.0; provides(numpy == 1.7.0); depends (mkl)")

        self.scipy_0_11_0 = P("scipy-0.11.0; depends (numpy >= 1.4.0)")
        self.scipy_0_12_0 = P("scipy-0.12.0; depends (numpy >= 1.4.0)")

        self.matplotlib_1_2_0 = P("matplotlib-1.2.0; depends (numpy >= 1.6.0)")

        repo = Repository([self.mkl_10_1_0, self.mkl_10_2_0, self.mkl_10_3_0,
                           self.mkl_11_0_0, self.numpy_1_6_0])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
Пример #15
0
    def test_what_provides_replaces(self):
        scikit_learn = P("scikit_learn-0.12.0")
        sklearn = P("sklearn-0.13.0; replaces (scikit_learn==0.12.0)")
        pool = Pool([Repository([scikit_learn, sklearn])])

        self.assertEqual(set(pool.what_provides(R("sklearn"))), set([sklearn]))
        self.assertEqual(set(pool.what_provides(R("scikit_learn"))),
                         set([sklearn, scikit_learn]))
Пример #16
0
    def test_simple(self):
        repo1 = Repository([mkl_10_1_0, mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(mkl_10_1_0, pool.package_by_id(mkl_10_1_0.id))
        self.assertEqual(mkl_10_2_0, pool.package_by_id(mkl_10_2_0.id))
        self.assertRaises(MissingPackageInPool, lambda: pool.package_by_id(mkl_10_3_0.id))
Пример #17
0
    def test_priority_not_registered(self):
        repo = Repository()
        pool = Pool()

        self.assertRaises(DepSolverError,
                          lambda: pool.repository_priority(repo))
        self.assertRaises(DepSolverError,
                          lambda: pool.set_repository_order(repo, "dummy"))
Пример #18
0
    def test_simple2(self):
        repo = Repository([mkl_10_1_0, mkl_10_2_0])
        pool = Pool([repo])

        self.assertEqual(mkl_10_1_0, pool.package_by_id(mkl_10_1_0.id))
        self.assertEqual(mkl_10_2_0, pool.package_by_id(mkl_10_2_0.id))
        self.assertRaises(MissingPackageInPool,
                          lambda: pool.package_by_id(mkl_10_3_0.id))
Пример #19
0
    def test_simple_provided(self):
        r_operations = [Install(nomkl_numpy_1_7_0), Install(scipy_0_11_0)]
        repo = Repository([mkl_11_0_0, scipy_0_11_0, nomkl_numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("scipy"), installed_repo, policy)
        self.assertEqual(operations, r_operations)
Пример #20
0
    def test_simple(self):
        r_id = [1, 2]

        repo1 = Repository(packages=[self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(self.mkl_10_1_0.id, r_id[0])
        self.assertEqual(self.mkl_10_2_0.id, r_id[1])

        self.assertRaises(MissingPackageInfoInPool, lambda: pool.package_by_id(self.mkl_10_3_0.id))
Пример #21
0
    def test_no_install(self):
        """Ensure the most up-to-date version is installed when directly installed."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("mkl"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0)])
Пример #22
0
    def test_simple(self):
        """Numpy depends on MKL, one version of NumPy only."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0), Install(numpy_1_6_0)])
Пример #23
0
    def test_simple(self):
        """Numpy depends on MKL, one version of NumPy only."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0), Install(numpy_1_6_0)])
Пример #24
0
    def test_simple2(self):
        """Numpy depends on MKL, ensure we install the most up-to-date version."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0), Install(numpy_1_7_0)])
Пример #25
0
    def test_simple2(self):
        """Numpy depends on MKL, ensure we install the most up-to-date version."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0), Install(numpy_1_7_0)])
Пример #26
0
    def test_dependency_already_provided_but_older(self):
        """Numpy depends on MKL, older MKL already installed."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository([mkl_10_3_0])

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(numpy_1_7_0)])
Пример #27
0
    def test_simple_provided(self):
        r_operations = [Install(nomkl_numpy_1_7_0), Install(scipy_0_11_0)]
        repo = Repository([mkl_11_0_0, scipy_0_11_0, nomkl_numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("scipy"), installed_repo, policy)
        self.assertEqual(operations, r_operations)
Пример #28
0
    def test_no_install(self):
        """Ensure the most up-to-date version is installed when directly installed."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        operations = solve(pool, R("mkl"), installed_repo, policy)
        self.assertEqual(operations, [Install(mkl_11_0_0)])
Пример #29
0
    def test_dependency_already_provided_but_older(self):
        """Numpy depends on MKL, older MKL already installed."""
        repo = Repository([mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_7_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository([mkl_10_3_0])

        operations = solve(pool, R("numpy"), installed_repo, policy)
        self.assertEqual(operations, [Install(numpy_1_7_0)])
Пример #30
0
    def test_simple(self):
        r_id = [1, 2]

        repo1 = Repository(packages=[self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(self.mkl_10_1_0.id, r_id[0])
        self.assertEqual(self.mkl_10_2_0.id, r_id[1])

        self.assertRaises(MissingPackageInfoInPool,
                          lambda: pool.package_by_id(self.mkl_10_3_0.id))
Пример #31
0
    def test_simple(self):
        """Ensure the policy returns the highest version across a set of
        packages with the same name."""
        r_candidates = [mkl_10_3_0.id, mkl_11_0_0.id]
        repository = Repository([mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repository)

        policy = DefaultPolicy()

        candidates = policy.prefered_package_ids(pool, {}, r_candidates)
        self.assertEqual(list(candidates), [mkl_11_0_0.id])
Пример #32
0
    def test_already_satisfied(self):
        """Ensure we don't install a more recent version when the requirement
        is already satisfied."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()
        installed_repo.add_package(mkl_10_2_0)

        operations = solve(pool, R("mkl"), installed_repo, policy)
        self.assertEqual(operations, [])
Пример #33
0
    def test_already_installed_but_not_satisfied(self):
        """Ensure we update to the most recent version when the requirement
        is not already satisfied."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()
        installed_repo.add_package(mkl_10_2_0)

        operations = solve(pool, R("mkl >= 10.3.0"), installed_repo, policy)
        self.assertEqual(operations, [Update(mkl_10_2_0, mkl_11_0_0)])
Пример #34
0
    def test_already_installed_but_not_satisfied(self):
        """Ensure we update to the most recent version when the requirement
        is not already satisfied."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()
        installed_repo.add_package(mkl_10_2_0)

        operations = solve(pool, R("mkl >= 10.3.0"), installed_repo, policy)
        self.assertEqual(operations, [Update(mkl_10_2_0, mkl_11_0_0)])
Пример #35
0
    def test_already_satisfied(self):
        """Ensure we don't install a more recent version when the requirement
        is already satisfied."""
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()
        installed_repo.add_package(mkl_10_2_0)

        operations = solve(pool, R("mkl"), installed_repo, policy)
        self.assertEqual(operations, [])
Пример #36
0
    def setUp(self):
        self.mkl_10_1_0 = P("mkl-10.1.0")
        self.mkl_10_2_0 = P("mkl-10.2.0")
        self.mkl_10_3_0 = P("mkl-10.3.0")
        self.mkl_11_0_0 = P("mkl-11.0.0")

        self.numpy_1_6_0 = P("numpy-1.6.0; depends (mkl)")

        repo = Repository([self.mkl_10_1_0, self.mkl_10_2_0, self.mkl_10_3_0,
            self.mkl_11_0_0, self.numpy_1_6_0])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
Пример #37
0
    def test_simple_fulfilled_installed(self):
        """Ensure the policy returns the installed version first if it fulfills
        the requirement, even if higher versions are available."""
        r_candidates = [mkl_10_3_0.id, mkl_11_0_0.id]
        repository = Repository([mkl_10_3_0, mkl_11_0_0])

        pool = Pool()
        pool.add_repository(repository)

        policy = DefaultPolicy()

        candidates = policy.prefered_package_ids(pool,
                                                 {mkl_10_3_0.id: mkl_10_3_0},
                                                 r_candidates)
        self.assertEqual(list(candidates), [mkl_10_3_0.id, mkl_11_0_0.id])
Пример #38
0
    def test_priority_simple(self):
        paid_repo = Repository([
            self.mkl_10_1_0,
            self.mkl_10_2_0,
            self.mkl_10_3_0,
            self.mkl_11_0_0,
            self.numpy_1_6_0,
            self.numpy_1_7_0,
        ], name="paid")
        free_repo = Repository([self.nomkl_numpy_1_7_0], "free")
        pool = Pool([paid_repo, free_repo])
        pool.set_repository_order("free", before="paid")

        self.assertEqual(pool.repository_priority(paid_repo), 0)
        self.assertEqual(pool.repository_priority(free_repo), -1)
Пример #39
0
    def test_priority_simple(self):
        paid_repo = Repository([
            self.mkl_10_1_0,
            self.mkl_10_2_0,
            self.mkl_10_3_0,
            self.mkl_11_0_0,
            self.numpy_1_6_0,
            self.numpy_1_7_0,
        ],
                               name="paid")
        free_repo = Repository([self.nomkl_numpy_1_7_0], "free")
        pool = Pool([paid_repo, free_repo])
        pool.set_repository_order("free", before="paid")

        self.assertEqual(pool.repository_priority(paid_repo), 0)
        self.assertEqual(pool.repository_priority(free_repo), -1)
Пример #40
0
    def test_simple(self):
        r_operations = [Install(mkl_11_0_0), Install(numpy_1_7_0),
                Install(scipy_0_12_0)]

        repo = Repository([mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_6_1,
                           numpy_1_7_0, scipy_0_12_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        req = R("scipy")

        operations = solve(pool, req, installed_repo, policy)
        self.assertEqual(operations, r_operations)
Пример #41
0
    def test_simple(self):
        r_operations = [Install(mkl_11_0_0), Install(numpy_1_7_0),
                Install(scipy_0_12_0)]

        repo = Repository([mkl_10_3_0, mkl_11_0_0, numpy_1_6_0, numpy_1_6_1,
                           numpy_1_7_0, scipy_0_12_0])

        pool = Pool()
        pool.add_repository(repo)

        installed_repo = Repository()

        req = R("scipy")

        operations = solve(pool, req, installed_repo, policy)
        self.assertEqual(operations, r_operations)
Пример #42
0
    def setUp(self):
        self.mkl_10_1_0 = P("mkl-10.1.0")
        self.mkl_10_2_0 = P("mkl-10.2.0")
        self.mkl_10_3_0 = P("mkl-10.3.0")
        self.mkl_11_0_0 = P("mkl-11.0.0")

        self.numpy_1_6_0 = P("numpy-1.6.0; depends (mkl)")

        repo = Repository([
            self.mkl_10_1_0, self.mkl_10_2_0, self.mkl_10_3_0, self.mkl_11_0_0,
            self.numpy_1_6_0
        ])
        pool = Pool()
        pool.add_repository(repo)

        self.pool = pool
    def test_complex_scenario_1(self):
        repo = Repository([
            mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_6_0,
            numpy_1_6_1, numpy_1_7_0, scipy_0_11_0, scipy_0_12_0
        ])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(
            PackageRule.from_string("scipy-0.11.0 | scipy-0.12.0", pool))
        r_rules.add(
            PackageRule.from_string("-scipy-0.11.0 | -scipy-0.12.0", pool))
        r_rules.add(
            PackageRule.from_string(
                "-scipy-0.11.0 | numpy-1.6.0 | numpy-1.6.1 | numpy-1.7.0",
                pool))
        r_rules.add(
            PackageRule.from_string(
                "-scipy-0.12.0 | numpy-1.6.0 | numpy-1.6.1 | numpy-1.7.0",
                pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.1", pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.0", pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.6.0 | -numpy-1.6.1", pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.6.1 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(
            PackageRule.from_string(
                "-numpy-1.6.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0",
                pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules, set(create_install_rules(pool, R("scipy"))))
Пример #44
0
    def test_what_provides_simple(self):
        repo1 = Repository([self.numpy_1_6_0, self.numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(set(pool.what_provides(R("numpy"))), set([self.numpy_1_6_0, self.numpy_1_7_0]))
        self.assertEqual(pool.what_provides(R("numpy >= 1.6.1")), [self.numpy_1_7_0])

        repo1 = Repository([self.nomkl_numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(pool.what_provides(R("numpy")), [self.nomkl_numpy_1_7_0])
Пример #45
0
    def test_simple_fulfilled_installed(self):
        """Ensure the policy returns the installed version first if it fulfills
        the requirement, even if higher versions are available."""
        mkl_10_4_0 = P("mkl-10.4.0")
        remote_repository = Repository([self.mkl_10_3_0, self.mkl_11_0_0], "remote")
        installed_repository = Repository([mkl_10_4_0], "installed")

        pool = Pool([installed_repository, remote_repository])
        pool.set_repository_order("installed", "remote")
        policy = DefaultPolicy()

        queue = [p.id for p in [mkl_10_4_0, self.mkl_10_3_0, self.mkl_11_0_0]]

        candidates = policy.select_preferred_packages(pool, {}, queue)
        self.assertEqual(list(candidates), [self.mkl_11_0_0.id])

        candidates = policy.select_preferred_packages(pool, {mkl_10_4_0.id: True}, queue)
        self.assertEqual(list(candidates), [mkl_10_4_0.id, self.mkl_11_0_0.id])
    def test_already_installed_indirect_provided(self):
        # Installed requirement has one dependency with multiple provides for
        # the same name available in the pool, one of which is already
        # installed. Here: scipy depends on numpy, nomkl_numpy is also
        # available and already installed
        repo = Repository([mkl_11_0_0, nomkl_numpy_1_7_0, numpy_1_7_0, scipy_0_11_0])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("scipy-0.11.0", pool))
        r_rules.add(PackageRule.from_string("-scipy-0.11.0 | numpy-1.7.0 | nomkl_numpy-1.7.0", pool))
        r_rules.add(PackageRule.from_string("-numpy-1.7.0 | -nomkl_numpy-1.7.0", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.7.0 | mkl-11.0.0", pool))

        self.assertEqual(r_rules,
                set(create_install_rules(pool, R("scipy"))))
Пример #47
0
    def test_simple(self):
        """Ensure the policy returns the highest version across a set of
        packages with the same name."""
        pool = Pool([Repository([self.mkl_10_3_0, self.mkl_11_0_0])])
        policy = DefaultPolicy()

        queue = [self.mkl_10_3_0.id, self.mkl_11_0_0.id]

        candidates = policy.select_preferred_packages(pool, {}, queue)
        self.assertEqual(list(candidates), [self.mkl_11_0_0.id])
    def test_create_install_rules_simple_dependency(self):
        # Installed requirement has only one provide
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0, numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("numpy-1.7.0", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules,
                set(create_install_rules(pool, R("numpy"))))
    def test_already_installed_indirect_provided(self):
        # Installed requirement has one dependency with multiple provides for
        # the same name available in the pool, one of which is already
        # installed. Here: scipy depends on numpy, nomkl_numpy is also
        # available and already installed
        repo = Repository(
            [mkl_11_0_0, nomkl_numpy_1_7_0, numpy_1_7_0, scipy_0_11_0])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("scipy-0.11.0", pool))
        r_rules.add(
            PackageRule.from_string(
                "-scipy-0.11.0 | numpy-1.7.0 | nomkl_numpy-1.7.0", pool))
        r_rules.add(
            PackageRule.from_string("-numpy-1.7.0 | -nomkl_numpy-1.7.0", pool))
        r_rules.add(PackageRule.from_string("-numpy-1.7.0 | mkl-11.0.0", pool))

        self.assertEqual(r_rules, set(create_install_rules(pool, R("scipy"))))
Пример #50
0
    def test_add_repository(self):
        """Ensures we do not add the same package twice."""
        repo1 = Repository([self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo1)

        repo2 = Repository([P(str(self.mkl_10_1_0))])
        pool.add_repository(repo2)

        self.assertEqual(len(pool.what_provides(R("mkl"))), 3)
Пример #51
0
    def test_simple_fulfilled_installed(self):
        """Ensure the policy returns the installed version first if it fulfills
        the requirement, even if higher versions are available."""
        mkl_10_4_0 = P("mkl-10.4.0")
        remote_repository = Repository([self.mkl_10_3_0, self.mkl_11_0_0],
                                       "remote")
        installed_repository = Repository([mkl_10_4_0], "installed")

        pool = Pool([installed_repository, remote_repository])
        pool.set_repository_order("installed", "remote")
        policy = DefaultPolicy()

        queue = [p.id for p in [mkl_10_4_0, self.mkl_10_3_0, self.mkl_11_0_0]]

        candidates = policy.select_preferred_packages(pool, {}, queue)
        self.assertEqual(list(candidates), [self.mkl_11_0_0.id])

        candidates = policy.select_preferred_packages(pool,
                                                      {mkl_10_4_0.id: True},
                                                      queue)
        self.assertEqual(list(candidates), [mkl_10_4_0.id, self.mkl_11_0_0.id])
Пример #52
0
    def test_ctor_simple(self):
        repository = Repository([P("mkl-10.1.0"),
                                 P("numpy-1.7.0; depends (MKL >= 10.1.0)"),
                                 P("scipy-0.12.0; depends (numpy >= 1.7.0)")])
        pool = Pool([repository])

        rule = PackageRule(pool, [1, 2], "job_install", "scipy")

        self.assertEqual(rule.enabled, True)
        self.assertEqual(rule.literals, [1, 2])
        self.assertEqual(rule.reason, "job_install")
        self.assertEqual(rule.rule_hash, "05cf2")
Пример #53
0
    def test_what_provides_include_indirect(self):
        repo1 = Repository([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(pool.what_provides(R("numpy >= 1.6.1")), [numpy_1_7_0])
        self.assertEqual(set(pool.what_provides(R("numpy"), 'include_indirect')),
                         set([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0]))
        self.assertEqual(set(pool.what_provides(R("numpy >= 1.6.1"), 'include_indirect')),
                         set([numpy_1_7_0, nomkl_numpy_1_7_0]))
        self.assertEqual(set(pool.what_provides(R("numpy >= 1.6.1"), 'direct_only')),
                         set([numpy_1_7_0]))
        self.assertEqual(set(pool.what_provides(R("numpy >= 1.6.1"), 'any')),
                         set([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0]))
Пример #54
0
    def test_what_provides_include_indirect(self):
        repo1 = Repository([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo1)

        self.assertEqual(pool.what_provides(R("numpy >= 1.6.1")),
                         [numpy_1_7_0])
        self.assertEqual(
            set(pool.what_provides(R("numpy"), 'include_indirect')),
            set([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0]))
        self.assertEqual(
            set(pool.what_provides(R("numpy >= 1.6.1"), 'include_indirect')),
            set([numpy_1_7_0, nomkl_numpy_1_7_0]))
        self.assertEqual(
            set(pool.what_provides(R("numpy >= 1.6.1"), 'direct_only')),
            set([numpy_1_7_0]))
        self.assertEqual(set(pool.what_provides(R("numpy >= 1.6.1"), 'any')),
                         set([numpy_1_6_0, numpy_1_7_0, nomkl_numpy_1_7_0]))
    def test_multiple_provided_names_single_install_provide(self):
        # Installed requirement has 1 one provide, but multiple provides for
        # the same name are available in the pool
        repo = Repository([mkl_10_1_0, mkl_10_2_0, mkl_10_3_0, mkl_11_0_0,
            numpy_1_6_1, numpy_1_7_0])
        pool = Pool()
        pool.add_repository(repo)

        r_rules = set()
        r_rules.add(PackageRule.from_string("numpy-1.7.0", pool))
        r_rules.add(PackageRule.from_string("-numpy-1.7.0 | -numpy-1.6.1", pool))
        r_rules.add(PackageRule.from_string(
            "-numpy-1.7.0 | mkl-10.1.0 | mkl-10.2.0 | mkl-10.3.0 | mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.2.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.1.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-10.3.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.2.0 | -mkl-11.0.0", pool))
        r_rules.add(PackageRule.from_string("-mkl-10.3.0 | -mkl-11.0.0", pool))

        self.assertEqual(r_rules,
                set(create_install_rules(pool, R("numpy == 1.7.0"))))
Пример #56
0
    def test_simple(self):
        """Test we select the most recent version across a list of same
        packages with same name."""
        packages = [self.numpy_1_6_0, self.numpy_1_6_1, self.numpy_1_7_1]
        repository = Repository(packages)
        pool = Pool([repository])

        policy = DefaultPolicy()
        selected_ids = policy.select_preferred_packages(
            pool, {}, [p.id for p in packages])

        r_selected_ids = [self.numpy_1_7_1.id]
        self.assertEqual(r_selected_ids, selected_ids)
Пример #57
0
    def test_cmp_by_priority_prefer_installed_multi_repositories(self):
        """
        Check packages from multiple repositories are sorted accordingt to
        repository priority.
        """
        numpy_1_6_0 = P("numpy-1.6.0")
        numpy_1_6_1 = P("numpy-1.6.1")
        numpy_1_7_0 = P("numpy-1.7.0")
        i_numpy_1_6_0 = P("numpy-1.6.0")

        remote_repository = Repository([numpy_1_7_0, numpy_1_6_1, numpy_1_6_0], "remote")
        installed_repository = Repository([i_numpy_1_6_0], "installed")

        r_sorted_packages = [i_numpy_1_6_0, numpy_1_7_0, numpy_1_6_1, numpy_1_6_0]

        pool = Pool([installed_repository, remote_repository])
        pool.set_repository_order("installed", "remote")
        policy = DefaultPolicy()

        queue = [numpy_1_7_0, i_numpy_1_6_0, numpy_1_6_0, numpy_1_6_1]
        def _cmp(a, b):
            return policy.cmp_by_priority_prefer_installed(pool, {}, a, b)

        self.assertEqual(r_sorted_packages, sorted_with_cmp(queue, cmp=_cmp))
Пример #58
0
    def test_add_repository(self):
        """Ensures we do not add the same package twice."""
        repo1 = Repository([self.mkl_10_1_0, self.mkl_10_2_0])
        pool = Pool()
        pool.add_repository(repo1)

        repo2 = Repository([P(str(self.mkl_10_1_0))])
        pool.add_repository(repo2)

        self.assertEqual(len(pool.what_provides(R("mkl"))), 3)
Пример #59
0
    def test_priority_no_name(self):
        paid_repo = Repository([
            self.mkl_10_1_0,
            self.mkl_10_2_0,
            self.mkl_10_3_0,
            self.mkl_11_0_0,
            self.numpy_1_7_0,
        ], name="paid")
        free_repo = Repository([self.nomkl_numpy_1_7_0], "free")
        another_repo = Repository([self.numpy_1_6_1], "another_repo")
        another_repo_wo_name = Repository([self.numpy_1_6_0])
        pool = Pool([paid_repo, free_repo, another_repo, another_repo_wo_name])
        pool.set_repository_order("free", before="paid")

        self.assertEqual(pool.repository_priority(paid_repo), 0)
        self.assertEqual(pool.repository_priority(free_repo), -1)
        self.assertEqual(pool.repository_priority(another_repo), -1)
        self.assertEqual(pool.repository_priority(another_repo_wo_name), -1)
Пример #60
0
    def test_has_package(self):
        pool = Pool([Repository([self.mkl_10_1_0, self.mkl_10_2_0])])

        self.assertTrue(pool.has_package(self.mkl_10_1_0))
        self.assertFalse(pool.has_package(self.mkl_11_0_0))