END_TEST START_TEST(test_versions) { HySack sack = test_globals.sack; unsigned epoch; char *version, *release; HyPackage pkg; pkg = by_name(sack, "baby"); ck_assert_str_eq(hy_package_get_evr(pkg), "6:5.0-11"); epoch = hy_package_get_epoch(pkg); fail_unless(epoch == 6); version = hy_package_get_version(pkg); ck_assert_str_eq(version, "5.0"); hy_free(version); release = hy_package_get_release(pkg); ck_assert_str_eq(release, "11"); hy_free(release); hy_package_free(pkg); pkg = by_name(sack, "jay"); // epoch missing if it's 0: ck_assert_str_eq(hy_package_get_evr(pkg), "5.0-0"); epoch = hy_package_get_epoch(pkg); fail_unless(epoch == 0); version = hy_package_get_version(pkg); ck_assert_str_eq(version, "5.0"); hy_free(version); release = hy_package_get_release(pkg); ck_assert_str_eq(release, "0"); hy_free(release); hy_package_free(pkg); }
END_TEST START_TEST(test_goal_erase_clean_deps) { HySack sack = test_globals.sack; HyPackage pkg = by_name_repo(sack, "flying", HY_SYSTEM_REPO_NAME); // by default, leave dependencies alone: HyGoal goal = hy_goal_create(sack); hy_goal_erase(goal, pkg); hy_goal_run(goal); assert_iueo(goal, 0, 0, 1, 0); hy_goal_free(goal); // allow deleting dependencies: goal = hy_goal_create(sack); hy_goal_erase_flags(goal, pkg, HY_CLEAN_DEPS); fail_unless(hy_goal_run(goal) == 0); assert_iueo(goal, 0, 0, 2, 0); hy_goal_free(goal); // test userinstalled specification: HyPackage penny_pkg = by_name_repo(sack, "penny-lib", HY_SYSTEM_REPO_NAME); goal = hy_goal_create(sack); hy_goal_erase_flags(goal, pkg, HY_CLEAN_DEPS); hy_goal_userinstalled(goal, penny_pkg); // having the same solvable twice in a goal shouldn't break anything: hy_goal_userinstalled(goal, pkg); fail_unless(hy_goal_run(goal) == 0); assert_iueo(goal, 0, 0, 1, 0); hy_goal_free(goal); hy_package_free(penny_pkg); hy_package_free(pkg); }
END_TEST START_TEST(test_two_sacks) { /* This clumsily mimics create_ut_sack() and setup_with() to * create a second HySack. */ char *tmpdir = solv_dupjoin(test_globals.tmpdir, "/tmp", NULL); HySack sack1 = hy_sack_create(tmpdir, TEST_FIXED_ARCH, NULL, NULL, HY_MAKE_CACHE_DIR); Pool *pool1 = sack_pool(sack1); const char *path = pool_tmpjoin(pool1, test_globals.repo_dir, "change.repo", NULL); fail_if(load_repo(pool1, "change", path, 0)); HyPackage pkg1 = by_name(sack1, "penny-lib"); fail_if(pkg1 == NULL); HySack sack2 = test_globals.sack; Pool *pool2 = sack_pool(sack2); HyPackage pkg2 = by_name(sack2, "penny-lib"); fail_if(pkg2 == NULL); /* "penny-lib" is in both pools but at different offsets */ Solvable *s1 = pool_id2solvable(pool1, pkg1->id); Solvable *s2 = pool_id2solvable(pool2, pkg2->id); fail_if(s1->name == s2->name); fail_if(hy_package_cmp(pkg1, pkg2) != 0); hy_package_free(pkg1); hy_package_free(pkg2); hy_sack_free(sack1); solv_free(tmpdir); }
END_TEST START_TEST(test_installed) { HyPackage pkg1 = by_name_repo(test_globals.sack, "penny-lib", "main"); HyPackage pkg2 = by_name_repo(test_globals.sack, "penny-lib", HY_SYSTEM_REPO_NAME); int installed1 = hy_package_installed(pkg1); int installed2 = hy_package_installed(pkg2); fail_unless(installed1 == 0); fail_unless(installed2 == 1); hy_package_free(pkg1); hy_package_free(pkg2); }
END_TEST START_TEST(test_packager) { HyPackage pkg = by_name(test_globals.sack, "tour"); ck_assert_str_eq(hy_package_get_packager(pkg), "roll up <*****@*****.**>"); hy_package_free(pkg); }
END_TEST START_TEST(test_get_updateinfo) { HyStringArray urls; HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "tour"); fail_unless(hy_package_get_update_severity(pkg) == HY_UPDATE_SEVERITY_BUGFIX); fail_unless(strcmp(hy_package_get_update_name(pkg), "FEDORA-2008-9969") == 0); fail_unless(strcmp(hy_package_get_update_description(pkg), "An example update to the tour package.") == 0); /* test getting update URLs */ urls = hy_package_get_update_urls_bugzilla(pkg); fail_unless(urls != NULL); fail_unless(urls[0] != NULL); fail_unless(urls[1] == NULL); fail_unless(strcmp(urls[0], "https://bugzilla.redhat.com/show_bug.cgi?id=472090") == 0); hy_stringarray_free(urls); urls = hy_package_get_update_urls_cve(pkg); fail_unless(urls != NULL); fail_unless(urls[0] != NULL); fail_unless(urls[1] == NULL); fail_unless(strcmp(urls[0], "https://bugzilla.gnome.com/show_bug.cgi?id=472091") == 0); hy_stringarray_free(urls); urls = hy_package_get_update_urls_vendor(pkg); fail_unless(urls != NULL); fail_unless(urls[0] == NULL); hy_stringarray_free(urls); hy_package_free(pkg); }
END_TEST #define TOUR_45_46_DRPM_CHKSUM "\xc3\xc3\xd5\x72\xa4\x6b"\ "\x1a\x66\x90\x6d\x42\xca\x17\x63\xef\x36\x20\xf7\x02"\ "\x58\xaa\xac\x4c\x14\xbf\x46\x3e\xd5\x37\x16\xd4\x44" START_TEST(test_presto) { HySack sack = test_globals.sack; HyPackage tour = by_name(sack, "tour"); fail_if(tour == NULL); HyPackageDelta delta = hy_package_get_delta_from_evr(tour, "4-5"); const char *location = hy_packagedelta_get_location(delta); ck_assert_str_eq(location, "drpms/tour-4-5_4-6.noarch.drpm"); const char *baseurl = hy_packagedelta_get_baseurl(delta); fail_unless(baseurl == NULL); unsigned long long size = hy_packagedelta_get_downloadsize(delta); ck_assert_int_eq(size, 3132); int type; HyChecksum *csum = hy_packagedelta_get_chksum(delta, &type); fail_unless(type == HY_CHKSUM_SHA256); ck_assert(!memcmp(csum, TOUR_45_46_DRPM_CHKSUM, 32)); hy_packagedelta_free(delta); hy_package_free(tour); }
END_TEST START_TEST(test_goal_get_reason) { HyPackage pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); hy_goal_install(goal, pkg); hy_package_free(pkg); hy_goal_run(goal); HyPackageList plist = hy_goal_list_installs(goal); int i; int set = 0; FOR_PACKAGELIST(pkg, plist, i) { if (!strcmp(hy_package_get_name(pkg), "walrus")) { set |= 1 << 0; fail_unless(hy_goal_get_reason(goal, pkg) == HY_REASON_USER); } if (!strcmp(hy_package_get_name(pkg), "semolina")) { set |= 1 << 1; fail_unless(hy_goal_get_reason(goal, pkg) == HY_REASON_DEP); } } fail_unless(set == 3); hy_packagelist_free(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_downgrade) { HySack sack = test_globals.sack; HyPackage to_be_pkg = get_available_pkg(sack, "baby"); HyGoal goal = hy_goal_create(sack); hy_goal_downgrade_to(goal, to_be_pkg); 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); HyPackage pkg = hy_packagelist_get(plist, 0); ck_assert_str_eq(hy_package_get_evr(pkg), "6:4.9-3"); HyPackageList obsoleted = hy_goal_list_obsoleted_by_package(goal, pkg); fail_unless(hy_packagelist_count(obsoleted) == 1); HyPackage old_pkg = hy_packagelist_get(obsoleted, 0); ck_assert_str_eq(hy_package_get_evr(old_pkg), "6:5.0-11"); hy_packagelist_free(obsoleted); hy_packagelist_free(plist); hy_goal_free(goal); hy_package_free(to_be_pkg); }
END_TEST START_TEST(test_identical) { HySack sack = test_globals.sack; HyPackage pkg1 = by_name(sack, "penny-lib"); HyPackage pkg2 = by_name(sack, "flying"); HyPackage pkg3 = by_name(sack, "penny-lib"); fail_unless(hy_package_identical(pkg1, pkg3)); fail_if(hy_package_identical(pkg2, pkg3)); hy_package_free(pkg1); hy_package_free(pkg2); hy_package_free(pkg3); }
END_TEST START_TEST(test_package_summary) { HyPackage pkg = by_name(test_globals.sack, "penny-lib"); fail_if(strcmp(hy_package_get_summary(pkg), "in my ears")); hy_package_free(pkg); }
END_TEST START_TEST(test_sourcerpm) { HyPackage pkg = by_name(test_globals.sack, "tour"); char *sourcerpm = hy_package_get_sourcerpm(pkg); ck_assert_str_eq(sourcerpm, "tour-4-6.src.rpm"); hy_free(sourcerpm); hy_package_free(pkg); pkg = by_name(test_globals.sack, "mystery-devel"); sourcerpm = hy_package_get_sourcerpm(pkg); ck_assert_str_eq(sourcerpm, "mystery-19.67-1.src.rpm"); hy_free(sourcerpm); hy_package_free(pkg); }
static void add_cmdline(HySack sack) { Pool *pool = sack_pool(sack); const char *path = pool_tmpjoin(pool, test_globals.repo_dir, "yum/tour-4-6.noarch.rpm", NULL); HyPackage pkg = hy_sack_add_cmdline_package(sack, path); hy_package_free(pkg); }
static void package_dealloc(_PackageObject *self) { if (self->package) hy_package_free(self->package); Py_XDECREF(self->sack); Py_TYPE(self)->tp_free(self); }
void hy_packagelist_free(HyPackageList plist) { int i; for (i = 0; i < plist->count; ++i) hy_package_free(plist->elements[i]); solv_free(plist->elements); solv_free(plist); }
static void update_local(HySack sack, const char *fn) { HyPackage pkg; hy_sack_create_cmdline_repo(sack); pkg = hy_sack_add_cmdline_package(sack, fn); if (pkg) { update(sack, pkg); hy_package_free(pkg); } }
END_TEST START_TEST(test_lookup_num) { HyPackage pkg = by_name(test_globals.sack, "tour"); unsigned long long buildtime = hy_package_get_buildtime(pkg); fail_unless(buildtime > 1330473600); // after 2012-02-29 fail_unless(buildtime < 1456704000); // before 2016-02-29 hy_package_free(pkg); }
END_TEST START_TEST(test_no_sourcerpm) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "baby"); char *src = hy_package_get_sourcerpm(pkg); fail_unless(src == NULL); hy_package_free(pkg); }
END_TEST START_TEST(test_goal_install) { HyPackage pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_install(goal, pkg)); hy_package_free(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 2, 0, 0, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_upgrade) { HyPackage pkg = get_latest_pkg(test_globals.sack, "fool"); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_upgrade_to_flags(goal, pkg, HY_CHECK_INSTALLED)); hy_package_free(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 1, 0, 1); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_rerun) { HySack sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); HyPackage pkg = get_latest_pkg(sack, "walrus"); hy_goal_install(goal, pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 2, 0, 0, 0); hy_package_free(pkg); // add an erase: pkg = by_name_repo(sack, "dog", HY_SYSTEM_REPO_NAME); hy_goal_erase(goal, pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 2, 0, 1, 0); hy_package_free(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_get_more_requires) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "walrus"); HyReldepList reldeplist = hy_package_get_requires(pkg); fail_unless(hy_reldeplist_count(reldeplist) == 2); hy_reldeplist_free(reldeplist); hy_package_free(pkg); }
END_TEST START_TEST(test_goal_actions) { HyPackage pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_has_actions(goal, HY_INSTALL)); fail_if(hy_goal_install(goal, pkg)); fail_unless(hy_goal_has_actions(goal, HY_INSTALL)); hy_package_free(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_get_clone) { HySack sack = test_globals.sack; int max = sack_last_solvable(sack); fail_unless(hy_packageset_count(pset) == 3); HyPackage pkg0 = hy_packageset_get_clone(pset, 0); HyPackage pkg9 = hy_packageset_get_clone(pset, 1); HyPackage pkg_max = hy_packageset_get_clone(pset, 2); fail_unless(package_id(pkg0) == 0); fail_unless(package_id(pkg9) == 9); fail_unless(package_id(pkg_max) == max); fail_unless(hy_packageset_get_clone(pset, 3) == NULL); hy_package_free(pkg0); hy_package_free(pkg9); hy_package_free(pkg_max); HyPackage pkg8 = package_create(sack, 8); HyPackage pkg11 = package_create(sack, 11); hy_packageset_add(pset, pkg8); hy_packageset_add(pset, pkg11); pkg8 = hy_packageset_get_clone(pset, 1); pkg9 = hy_packageset_get_clone(pset, 2); pkg11 = hy_packageset_get_clone(pset, 3); fail_unless(package_id(pkg8) == 8); fail_unless(package_id(pkg9) == 9); fail_unless(package_id(pkg11) == 11); hy_package_free(pkg8); hy_package_free(pkg9); hy_package_free(pkg11); }
END_TEST START_TEST(test_has) { HySack sack = test_globals.sack; HyPackage pkg0 = package_create(sack, 0); HyPackage pkg9 = package_create(sack, 9); HyPackage pkg_max = package_create(sack, sack_last_solvable(sack)); HyPackage pkg7 = package_create(sack, 7); HyPackage pkg8 = package_create(sack, 8); HyPackage pkg15 = package_create(sack, 15); fail_unless(hy_packageset_has(pset, pkg0)); fail_unless(hy_packageset_has(pset, pkg9)); fail_unless(hy_packageset_has(pset, pkg_max)); fail_if(hy_packageset_has(pset, pkg7)); fail_if(hy_packageset_has(pset, pkg8)); fail_if(hy_packageset_has(pset, pkg15)); hy_package_free(pkg0); hy_package_free(pkg9); hy_package_free(pkg_max); hy_package_free(pkg7); hy_package_free(pkg8); hy_package_free(pkg15); }
END_TEST START_TEST(test_goal_no_reinstall) { HySack sack = test_globals.sack; HyPackage pkg = get_latest_pkg(sack, "penny"); HyGoal goal = hy_goal_create(sack); fail_if(hy_goal_install(goal, pkg)); hy_package_free(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_erase_simple) { HySack sack = test_globals.sack; HyPackage pkg = by_name_repo(sack, "penny", HY_SYSTEM_REPO_NAME); HyGoal goal = hy_goal_create(sack); fail_if(hy_goal_erase(goal, pkg)); hy_package_free(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 1, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_update_impossible) { HyPackage pkg = get_latest_pkg(test_globals.sack, "walrus"); fail_if(pkg == NULL); HyGoal goal = hy_goal_create(test_globals.sack); // can not try an update, walrus is not installed: fail_unless(hy_goal_upgrade_to_flags(goal, pkg, HY_CHECK_INSTALLED)); hy_package_free(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_chksum_fail) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "walrus"); int type; const unsigned char *chksum = hy_package_get_chksum(pkg, &type); fail_unless(chksum == NULL); chksum = hy_package_get_hdr_chksum(pkg, &type); fail_unless(chksum == NULL); hy_package_free(pkg); }
END_TEST START_TEST(test_get_files_cmdline) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "tour"); HyStringArray files; files = hy_package_get_files(pkg); fail_unless(hy_stringarray_length(files) == 6); hy_stringarray_free(files); hy_package_free(pkg); }