예제 #1
0
파일: iutil-py.c 프로젝트: Tojaj/hawkey
PyObject *
advisoryreflist_to_pylist(const HyAdvisoryRefList advisoryreflist, PyObject *sack)
{
    HyAdvisoryRef cadvisoryref;
    PyObject *advisoryref;

    PyObject *list = PyList_New(0);
    if (list == NULL)
	return NULL;

    const int count = hy_advisoryreflist_count(advisoryreflist);
    for (int i = 0; i < count; ++i) {
	cadvisoryref = hy_advisoryreflist_get_clone(advisoryreflist,  i);
	advisoryref = advisoryrefToPyObject(cadvisoryref, sack);

	if (advisoryref == NULL) {
	    hy_advisoryref_free(cadvisoryref);
	    goto fail;
	}

	int rc = PyList_Append(list, advisoryref);
	Py_DECREF(advisoryref);
	if (rc == -1)
	    goto fail;
    }

    return list;
 fail:
    Py_DECREF(list);
    return NULL;
}
예제 #2
0
END_TEST

START_TEST(test_refs)
{
    HyAdvisoryRef reference;
    HyAdvisoryRefList reflist = hy_advisory_get_references(advisory);

    ck_assert_int_eq(hy_advisoryreflist_count(reflist), 2);
    reference = hy_advisoryreflist_get_clone(reflist, 0);
    ck_assert_str_eq(
	    hy_advisoryref_get_url(reference),
	    "https://bugzilla.redhat.com/show_bug.cgi?id=472090");
    hy_advisoryref_free(reference);
    reference = hy_advisoryreflist_get_clone(reflist, 1);
    ck_assert_str_eq(
	    hy_advisoryref_get_url(reference),
	    "https://bugzilla.gnome.com/show_bug.cgi?id=472091");
    hy_advisoryref_free(reference);

    hy_advisoryreflist_free(reflist);
}
예제 #3
0
파일: advisory.c 프로젝트: Xake/hawkey
HyAdvisoryRefList
hy_advisory_get_references(HyAdvisory advisory)
{
    Dataiterator di;
    HyAdvisoryRef ref;
    Pool *pool = advisory->pool;
    Id a_id = advisory->a_id;
    HyAdvisoryRefList reflist = advisoryreflist_create();

    dataiterator_init(&di, pool, 0, a_id, UPDATE_REFERENCE, 0, 0);
    for (int index = 0; dataiterator_step(&di); index++) {
	ref = advisoryref_create(pool, a_id, index);
	advisoryreflist_add(reflist, ref);
	hy_advisoryref_free(ref);
    }
    dataiterator_free(&di);

    return reflist;
}