END_TEST START_TEST(test_goal_describe_problem_excludes) { DnfSack *sack = test_globals.sack; HyQuery q = hy_query_create_flags(sack, HY_IGNORE_EXCLUDES); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "semolina"); DnfPackageSet *pset = hy_query_run_set(q); dnf_sack_add_excludes(sack, pset); g_object_unref(pset); hy_query_free(q); HyGoal goal = hy_goal_create(sack); HySelector sltr = hy_selector_create(sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "semolina"); hy_goal_install_selector(goal, sltr, NULL); hy_selector_free(sltr); fail_unless(hy_goal_run(goal)); fail_unless(hy_goal_count_problems(goal) > 0); char *problem = hy_goal_describe_problem(goal, 0); ck_assert_str_eq(problem, "package semolina does not exist"); g_free(problem); hy_goal_free(goal); }
END_TEST START_TEST(test_query_pkg) { HyPackageSet pset; HyQuery q, q2; // setup q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "jay"); pset = hy_query_run_set(q); hy_query_free(q); fail_unless(hy_packageset_count(pset), 2); // use hy_query_filter_package_in(): q = hy_query_create(test_globals.sack); // check validation works: fail_unless(hy_query_filter_package_in(q, HY_PKG, HY_GT, pset)); // add the filter: fail_if(hy_query_filter_package_in(q, HY_PKG, HY_EQ, pset)); hy_packageset_free(pset); // cloning must work q2 = hy_query_clone(q); fail_unless(query_count_results(q) == 2); hy_query_free(q); // filter on hy_query_filter_latest_per_arch(q2, 1); pset = hy_query_run_set(q2); fail_unless(hy_packageset_count(pset) == 1); HyPackage pkg = hy_packageset_get_clone(pset, 0); char *nvra = hy_package_get_nevra(pkg); ck_assert_str_eq(nvra, "jay-6.0-0.x86_64"); solv_free(nvra); hy_package_free(pkg); hy_packageset_free(pset); hy_query_free(q2); }
static void obsoletes(HifSack *sack) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); HifPackageSet *installed_pkgs = hy_query_run_set(q); hy_query_free(q); q = hy_query_create(sack); hy_query_filter_package_in(q, HY_PKG_OBSOLETES, HY_EQ, installed_pkgs); g_object_unref(installed_pkgs); execute_print(sack, q, 1); hy_query_free(q); }
END_TEST START_TEST(test_query_run_set_sanity) { HySack sack = test_globals.sack; HyQuery q = hy_query_create(sack); HyPackageSet pset = hy_query_run_set(q); // make sure we are testing with some odd bits in the underlying map: fail_unless(TEST_EXPECT_SYSTEM_NSOLVABLES % 8); fail_unless(hy_packageset_count(pset) == TEST_EXPECT_SYSTEM_NSOLVABLES); hy_packageset_free(pset); hy_query_free(q); }
END_TEST START_TEST(test_goal_upgrade_all_excludes) { DnfSack *sack = test_globals.sack; HyQuery q = hy_query_create_flags(sack, HY_IGNORE_EXCLUDES); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "pilchard"); DnfPackageSet *pset = hy_query_run_set(q); dnf_sack_add_excludes(sack, pset); g_object_unref(pset); hy_query_free(q); HyGoal goal = hy_goal_create(sack); hy_goal_upgrade_all(goal); hy_goal_run(goal); fail_unless(size_and_free(hy_goal_list_upgrades(goal, NULL)) == 3); hy_goal_free(goal); }
static PyObject * set(_SelectorObject *self, PyObject *args) { key_t keyname; int cmp_type; PyObject *match; if (!PyArg_ParseTuple(args, "iiO", &keyname, &cmp_type, &match)) return NULL; if (keyname == HY_PKG) { const DnfPackageSet *pset; if (queryObject_Check(match)) { HyQuery target = queryFromPyObject(match); pset = hy_query_run_set(target); } else if (PyList_Check(match)) { DnfSack *sack = sackFromPyObject(self->sack); assert(sack); pset = pyseq_to_packageset(match, sack); } else { (ret2e(DNF_ERROR_BAD_SELECTOR, "Invalid value type: Only List and Query supported")); return NULL; } if (ret2e(hy_selector_pkg_set(self->sltr, keyname, cmp_type, pset), "Invalid Selector spec." )) { return NULL; } } else { const char *cmatch; PyObject *tmp_py_str = NULL; cmatch = pycomp_get_string(match, &tmp_py_str); if (ret2e(hy_selector_set(self->sltr, keyname, cmp_type, cmatch), "Invalid Selector spec." )) return NULL; } Py_RETURN_NONE; }
END_TEST START_TEST(test_excluded) { HySack sack = test_globals.sack; HyQuery q = hy_query_create_flags(sack, HY_IGNORE_EXCLUDES); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "jay"); HyPackageSet pset = hy_query_run_set(q); hy_sack_add_excludes(sack, pset); hy_packageset_free(pset); hy_query_free(q); q = hy_query_create_flags(sack, 0); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "jay"); fail_unless(query_count_results(q) == 0); hy_query_free(q); q = hy_query_create_flags(sack, HY_IGNORE_EXCLUDES); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "jay"); fail_unless(query_count_results(q) > 0); hy_query_free(q); }
END_TEST START_TEST(test_goal_distupgrade_all_excludes) { HyQuery q = hy_query_create_flags(test_globals.sack, HY_IGNORE_EXCLUDES); hy_query_filter_provides(q, HY_GT|HY_EQ, "flying", "0"); DnfPackageSet *pset = hy_query_run_set(q); dnf_sack_add_excludes(test_globals.sack, pset); g_object_unref(pset); hy_query_free(q); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_distupgrade_all(goal)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); GPtrArray *plist = hy_goal_list_downgrades(goal, NULL); fail_unless(plist->len == 1); assert_nevra_eq(g_ptr_array_index(plist, 0), "baby-6:4.9-3.x86_64"); g_ptr_array_unref(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_distupgrade_all_excludes) { HyQuery q = hy_query_create_flags(test_globals.sack, HY_IGNORE_EXCLUDES); hy_query_filter_provides(q, HY_GT|HY_EQ, "flying", "0"); HyPackageSet pset = hy_query_run_set(q); hy_sack_add_excludes(test_globals.sack, pset); hy_packageset_free(pset); hy_query_free(q); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_distupgrade_all(goal)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); HyPackageList plist = hy_goal_list_downgrades(goal); fail_unless(hy_packagelist_count(plist) == 1); assert_nevra_eq(hy_packagelist_get(plist, 0), "baby-6:4.9-3.x86_64"); hy_packagelist_free(plist); hy_goal_free(goal); }