예제 #1
0
    def test_installed_first(self):
        """
        Test installed version come first, even before higher version.
        """
        packages = [self.mkl_10_3_0, self.mkl_10_4_0]
        installed_packages = [P("mkl-10.4.0")]
        repository = Repository(packages)
        installed_repository = Repository(installed_packages)
        pool = Pool([repository, installed_repository])
        policy = DefaultPolicy()

        installed_map = OrderedDict()
        for p in installed_packages:
            installed_map[p.id] = p
        package_queues = policy._compute_prefered_packages_installed_first(
            pool, installed_map, [p.id for p in packages + installed_packages])

        r_package_queues = OrderedDict()
        r_package_queues[six.u("mkl")] = collections.deque(
            p.id for p in installed_packages + packages)

        self.assertEqual(r_package_queues, package_queues)
예제 #2
0
    def test_multiple_providers(self):
        """
        Test we select the most recent version across a list of different
        packages providing the same package.
        """
        packages = [
            self.numpy_1_6_0, self.numpy_1_6_1, self.numpy_1_7_1,
            self.nomkl_numpy_1_6_0, self.nomkl_numpy_1_6_1,
            self.nomkl_numpy_1_7_1, self.mkl_numpy_1_6_0, self.mkl_numpy_1_6_1,
            self.mkl_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.nomkl_numpy_1_7_1.id,
            self.mkl_numpy_1_7_1.id
        ]
        self.assertEqual(r_selected_ids, selected_ids)
예제 #3
0
    def test_multiple_providers(self):
        """Test package queues with different packages providing the same
        package."""
        packages = [
            self.numpy_1_6_0, self.numpy_1_6_1, self.numpy_1_7_1,
            self.nomkl_numpy_1_6_0, self.nomkl_numpy_1_6_1,
            self.nomkl_numpy_1_7_1
        ]
        repository = Repository(packages)
        pool = Pool([repository])

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

        r_package_queues = OrderedDict()
        r_package_queues[six.u("numpy")] = collections.deque(
            [self.numpy_1_6_0.id, self.numpy_1_6_1.id, self.numpy_1_7_1.id])
        r_package_queues[six.u("nomkl_numpy")] = collections.deque([
            self.nomkl_numpy_1_6_0.id, self.nomkl_numpy_1_6_1.id,
            self.nomkl_numpy_1_7_1.id
        ])

        self.assertEqual(r_package_queues, package_queues)
예제 #4
0
    def _create_solver(self, installed_packages, remote_packages):
        installed_repo = Repository(installed_packages)
        remote_repo = Repository(remote_packages)
        pool = Pool([installed_repo, remote_repo])

        return Solver(pool, installed_repo)
예제 #5
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))
예제 #6
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")