END_TEST START_TEST(test_query_evr) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_EVR, HY_EQ, "6.0-0"); fail_unless(query_count_results(q) == 1); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_EVR, HY_GT, "5.9-0"); fail_unless(query_count_results(q) == 2); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_EVR, HY_GT|HY_EQ, "5.0-0"); fail_unless(query_count_results(q) == 3); hy_query_free(q); const char *evrs[] = {"6.0-0", "2-9", "5.0-0", "0-100", NULL}; q = hy_query_create(test_globals.sack); hy_query_filter_in(q, HY_PKG_EVR, HY_EQ, evrs); fail_unless(query_count_results(q) == 3); hy_query_free(q); }
END_TEST START_TEST(test_query_apply) { HySack sack = test_globals.sack; HyQuery q; HyPackageList plist; q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_NOT | HY_GLOB, "j*"); struct _HyQuery _q = *q; fail_unless(_q.result == NULL); ck_assert_int_gt(_q.nfilters, 0); ck_assert_int_eq(_q.applied, 0); hy_query_apply(q); _q = *q; fail_unless(_q.result != NULL); ck_assert_int_eq(_q.nfilters, 0); ck_assert_int_eq(_q.applied, 1); hy_query_filter(q, HY_PKG_NAME, HY_NOT | HY_GLOB, "p*"); _q = *q; fail_unless(_q.result != NULL); ck_assert_int_gt(_q.nfilters, 0); ck_assert_int_eq(_q.applied, 0); plist = hy_query_run(q); ck_assert_int_eq(hy_packagelist_count(plist), 6); hy_packagelist_free(plist); hy_query_free(q); }
static void search_filter_repos(HifSack *sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); execute_print(sack, q, 0); hy_query_free(q); }
static void search_anded(HifSack *sack, const char *name_substr, const char *summary_substr) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_SUBSTR, name_substr); hy_query_filter(q, HY_PKG_SUMMARY, HY_SUBSTR, summary_substr); execute_print(sack, q, 0); hy_query_free(q); }
static void updatables_query_name(HifSack *sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); #if 0 // must stil work if enabled hy_query_filter(q, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); #endif hy_query_filter_upgrades(q, 1); execute_print(sack, q, 0); hy_query_free(q); }
END_TEST START_TEST(test_query_anded) { HyQuery q; q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_SUBSTR, "penny"); hy_query_filter(q, HY_PKG_SUMMARY, HY_SUBSTR, "ears"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
static DnfPackage * get_available_pkg(DnfSack *sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); GPtrArray *plist = hy_query_run(q); fail_unless(plist->len == 1); DnfPackage *pkg = g_object_ref(g_ptr_array_index(plist, 0)); hy_query_free(q); g_ptr_array_unref(plist); return pkg; }
static HyPackage get_available_pkg(HySack sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); HyPackageList plist = hy_query_run(q); fail_unless(hy_packagelist_count(plist) == 1); HyPackage pkg = hy_packagelist_get_clone(plist, 0); hy_query_free(q); hy_packagelist_free(plist); return pkg; }
FOR_PACKAGELIST(pkg, new_pkglist, i) { _cleanup_hyquery_ HyQuery query = NULL; _cleanup_hypackagelist_ HyPackageList pkglist = NULL; query = hy_query_create (orig_sack->sack); hy_query_filter (query, HY_PKG_NAME, HY_EQ, hy_package_get_name (pkg)); hy_query_filter (query, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); pkglist = hy_query_run (query); if (hy_packagelist_count (pkglist) == 0) g_ptr_array_add (ret_added, _rpm_ostree_package_new (new_sack, pkg)); }
END_TEST START_TEST(test_query_clear) { HyQuery q; q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_NEQ, "fool"); hy_query_clear(q); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "fool"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
END_TEST START_TEST(test_query_case) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "Penny-lib"); fail_unless(query_count_results(q) == 0); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ|HY_ICASE, "Penny-lib"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
static void search_and_print(HifSack *sack, const char *name) { HyQuery q = hy_query_create(sack); printf("found packages by name:\n"); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); execute_print(sack, q, 0); hy_query_clear(q); printf("\nfound packages by substring of summary:\n"); hy_query_filter(q, HY_PKG_SUMMARY, HY_SUBSTR, name); execute_print(sack, q, 0); hy_query_free(q); }
END_TEST START_TEST(test_query_evr) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_EVR, HY_EQ, "5.1-0"); fail_unless(query_count_results(q) == 0); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_EVR, HY_EQ, "5.0-0"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
static HyPackage get_latest_pkg(HySack sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); hy_query_filter_latest_per_arch(q, 1); HyPackageList plist = hy_query_run(q); fail_unless(hy_packagelist_count(plist) == 1, "get_latest_pkg() failed finding '%s'.", name); HyPackage pkg = hy_packagelist_get_clone(plist, 0); hy_query_free(q); hy_packagelist_free(plist); return pkg; }
END_TEST START_TEST(test_query_provides_str) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_PROVIDES, HY_EQ, "pilchard"); ck_assert_int_eq(query_count_results(q), 2); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_PROVIDES, HY_EQ, "fool = 1-2"); ck_assert_int_eq(query_count_results(q), 2); hy_query_free(q); }
/* make Sack think k-1-1 is the running kernel */ static Id mock_running_kernel(HySack sack) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "k"); hy_query_filter(q, HY_PKG_EVR, HY_EQ, "1-1"); HyPackageList plist = hy_query_run(q); fail_unless(hy_packagelist_count(plist) == 1); HyPackage pkg = hy_packagelist_get_clone(plist, 0); hy_query_free(q); hy_packagelist_free(plist); Id id = package_id(pkg); hy_package_free(pkg); return id; }
/* make Sack think k-1-1 is the running kernel */ static Id mock_running_kernel(DnfSack *sack) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "k"); hy_query_filter(q, HY_PKG_EVR, HY_EQ, "1-1"); GPtrArray *plist = hy_query_run(q); fail_unless(plist->len == 1); DnfPackage *pkg = g_object_ref(g_ptr_array_index(plist, 0)); hy_query_free(q); g_ptr_array_unref(plist); Id id = dnf_package_get_id(pkg); g_object_unref(pkg); return id; }
END_TEST START_TEST(test_query_name) { HyQuery q; q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_SUBSTR, "penny"); fail_unless(query_count_results(q) == 2); hy_query_free(q); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "lane"); fail_if(query_count_results(q)); hy_query_free(q); }
static void userinstalled(HySack sack, HyGoal goal, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); HyPackageList plist = hy_query_run(q); HyPackage pkg; int i; FOR_PACKAGELIST(pkg, plist, i) hy_goal_userinstalled(goal, pkg); hy_packagelist_free(plist); hy_query_free(q); }
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); }
HyQuery hy_nevra_to_query(HyNevra nevra, DnfSack *sack) { HyQuery query = hy_query_create(sack); if (nevra->name != NULL) hy_query_filter(query, HY_PKG_NAME, HY_EQ, nevra->name); if (nevra->epoch != -1) hy_query_filter_num(query, HY_PKG_EPOCH, HY_EQ, nevra->epoch); if (nevra->version != NULL) hy_query_filter(query, HY_PKG_VERSION, HY_EQ, nevra->version); if (nevra->release != NULL) hy_query_filter(query, HY_PKG_RELEASE, HY_EQ, nevra->release); if (nevra->arch != NULL) hy_query_filter(query, HY_PKG_ARCH, HY_EQ, nevra->arch); return query; }
static GPtrArray * query_all_packages_in_sack (RpmOstreeRefSack *rsack) { HyQuery hquery = NULL; g_autoptr(GPtrArray) pkglist = NULL; GPtrArray *result; int i, c; hquery = hy_query_create (rsack->sack); hy_query_filter (hquery, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); pkglist = hy_query_run (hquery); result = g_ptr_array_new_with_free_func (g_object_unref); c = pkglist->len; for (i = 0; i < c; i++) { DnfPackage *pkg = pkglist->pdata[i]; g_ptr_array_add (result, _rpm_ostree_package_new (rsack, pkg)); } if (hquery) hy_query_free (hquery); return g_steal_pointer (&result); }
static void search_filter_files(HifSack *sack, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_FILE, HY_EQ, name); execute_print(sack, q, 0); hy_query_free(q); }
static gboolean print_rpmdb_diff (GFile *oldroot, GFile *newroot, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; _cleanup_hysack_ HySack old_sack = NULL; _cleanup_hypackagelist_ HyPackageList old_pkglist = NULL; _cleanup_hysack_ HySack new_sack = NULL; _cleanup_hypackagelist_ HyPackageList new_pkglist = NULL; guint i; HyPackage pkg; gboolean printed_header = FALSE; if (!rpmostree_get_pkglist_for_root (oldroot, &old_sack, &old_pkglist, cancellable, error)) goto out; if (!rpmostree_get_pkglist_for_root (newroot, &new_sack, &new_pkglist, cancellable, error)) goto out; printed_header = FALSE; FOR_PACKAGELIST(pkg, new_pkglist, i) { _cleanup_hyquery_ HyQuery query = NULL; _cleanup_hypackagelist_ HyPackageList pkglist = NULL; query = hy_query_create (old_sack); hy_query_filter (query, HY_PKG_NAME, HY_EQ, hy_package_get_name (pkg)); hy_query_filter (query, HY_PKG_EVR, HY_NEQ, hy_package_get_evr (pkg)); hy_query_filter (query, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); pkglist = hy_query_run (query); if (hy_packagelist_count (pkglist) > 0) { gs_free char *nevra = hy_package_get_nevra (pkg); if (!printed_header) { g_print ("Changed:\n"); printed_header = TRUE; } g_print (" %s\n", nevra); } }
END_TEST START_TEST(test_query_fileprovides) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_FILE, HY_EQ, "/no/answers"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
static void userinstalled(DnfSack *sack, HyGoal goal, const char *name) { HyQuery q = hy_query_create(sack); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); hy_query_filter(q, HY_PKG_REPONAME, HY_EQ, HY_SYSTEM_REPO_NAME); GPtrArray *plist = hy_query_run(q); DnfPackage *pkg; guint i; for(i = 0; i < plist->len; i++) { pkg = g_ptr_array_index (plist, i); hy_goal_userinstalled(goal, pkg); } g_ptr_array_unref(plist); hy_query_free(q); }
END_TEST START_TEST(test_query_glob) { HyQuery q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_GLOB, "pen*"); fail_unless(query_count_results(q) == 2); hy_query_free(q); }
END_TEST START_TEST(test_filter_sourcerpm) { HyQuery q = hy_query_create(test_globals.sack); fail_unless(hy_query_filter(q, HY_PKG_SOURCERPM, HY_GT, "tour-4-6.src.rpm")); fail_if(hy_query_filter(q, HY_PKG_SOURCERPM, HY_EQ, "tour-4-6.src.rpm")); fail_unless(size_and_free(q) == 1); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_SOURCERPM, HY_EQ, "mystery-19.67-1.src.rpm"); fail_unless(size_and_free(q) == 1); q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_SOURCERPM, HY_EQ, "mystery-devel-19.67-1.noarch.rpm"); fail_unless(size_and_free(q) == 0); }
END_TEST START_TEST(test_filter_description) { HyQuery q = hy_query_create(test_globals.sack); fail_if(hy_query_filter(q, HY_PKG_DESCRIPTION, HY_SUBSTR, "Magical development files for mystery.")); fail_unless(size_and_free(q) == 1); }
uint32_t TDNFQueryTermsHelper( HyPackageList hAccumPkgList, HyQuery hQuery, int nKeyId, const char* pszMatch ) { HyPackageList hPkgList = NULL; HyPackage hPkg = NULL; uint32_t unError = 0; int nIndex = 0; if(!hAccumPkgList || !hQuery || !pszMatch) { unError = ERROR_TDNF_INVALID_PARAMETER; goto error; } unError = hy_query_filter( hQuery, nKeyId, HY_GLOB | HY_ICASE, pszMatch); BAIL_ON_TDNF_HAWKEY_ERROR(unError); hPkgList = hy_query_run(hQuery); if(!hPkgList) { unError = HY_E_IO; BAIL_ON_TDNF_HAWKEY_ERROR(unError); } FOR_PACKAGELIST(hPkg, hPkgList, nIndex) { if (!hy_packagelist_has(hAccumPkgList, hPkg)) { hy_packagelist_push(hAccumPkgList, hy_package_link(hPkg)); } } cleanup: if (hPkgList != NULL) { hy_packagelist_free(hPkgList); } if (hQuery != NULL) { hy_query_clear(hQuery); } return unError; error: goto cleanup; }