HyAdvisoryList hy_package_get_advisories(HyPackage pkg, int cmp_type) { Dataiterator di; Id evr; int cmp; HyAdvisory advisory; Pool *pool = package_pool(pkg); HyAdvisoryList advisorylist = advisorylist_create(pool); Solvable *s = get_solvable(pkg); dataiterator_init(&di, pool, 0, 0, UPDATE_COLLECTION_NAME, pool_id2str(pool, s->name), SEARCH_STRING); dataiterator_prepend_keyname(&di, UPDATE_COLLECTION); while (dataiterator_step(&di)) { dataiterator_setpos_parent(&di); if (pool_lookup_id(pool, SOLVID_POS, UPDATE_COLLECTION_ARCH) != s->arch) continue; evr = pool_lookup_id(pool, SOLVID_POS, UPDATE_COLLECTION_EVR); if (!evr) continue; cmp = pool_evrcmp(pool, evr, s->evr, EVRCMP_COMPARE); if ((cmp > 0 && (cmp_type & HY_GT)) || (cmp < 0 && (cmp_type & HY_LT)) || (cmp == 0 && (cmp_type & HY_EQ))) { advisory = advisory_create(pool, di.solvid); advisorylist_add(advisorylist, advisory); hy_advisory_free(advisory); dataiterator_skip_solvable(&di); } } dataiterator_free(&di); return advisorylist; }
END_TEST START_TEST(test_get_advisories) { HyAdvisoryList advisories; HyAdvisory advisory; HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "tour"); advisories = hy_package_get_advisories(pkg, HY_GT); fail_unless(advisories != NULL); ck_assert_int_eq(hy_advisorylist_count(advisories), 1); advisory = hy_advisorylist_get_clone(advisories, 0); ck_assert_str_eq(hy_advisory_get_id(advisory), "FEDORA-2008-9969"); hy_advisory_free(advisory); hy_advisorylist_free(advisories); hy_package_free(pkg); }
static void advisory_teardown(void) { hy_advisory_free(advisory); teardown(); }