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)
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)
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)
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)
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))
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")