END_TEST START_TEST(test_goal_selector_upgrade) { HySelector sltr = hy_selector_create(test_globals.sack); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "dog")); fail_if(hy_selector_set(sltr, HY_PKG_EVR, HY_EQ, "1-2")); fail_if(hy_goal_upgrade_to_selector(goal, sltr)); fail_if(hy_goal_run(goal)); HyPackageList plist = hy_goal_list_upgrades(goal); fail_unless(hy_packagelist_count(plist) == 1); assert_nevra_eq(hy_packagelist_get(plist, 0), "dog-1-2.x86_64"); hy_packagelist_free(plist); hy_goal_free(goal); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); goal = hy_goal_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "pilchard")); fail_if(hy_goal_upgrade_to_selector(goal, sltr)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 2, 0, 0); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_selector_upgrade_provides) { DnfSack *sack = test_globals.sack; HySelector sltr = hy_selector_create(sack); HyGoal goal = hy_goal_create(sack); fail_if(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_EQ, "fool")); fail_if(hy_goal_upgrade_selector(goal, sltr)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 1, 0, 1); hy_goal_free(goal); sltr = hy_selector_create(sack); goal = hy_goal_create(sack); fail_if(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_EQ, "fool > 1-3")); fail_if(hy_goal_upgrade_selector(goal, sltr)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 1, 0, 1); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_erase_clean_deps) { DnfSack *sack = test_globals.sack; DnfPackage *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: DnfPackage *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); g_object_unref(penny_pkg); g_object_unref(pkg); }
END_TEST START_TEST(test_goal_selector_upgrade) { HySelector sltr = hy_selector_create(test_globals.sack); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "dog")); fail_if(hy_selector_set(sltr, HY_PKG_EVR, HY_EQ, "1-2")); fail_if(hy_goal_upgrade_to_selector(goal, sltr)); fail_if(hy_goal_run(goal)); GPtrArray *plist = hy_goal_list_upgrades(goal, NULL); fail_unless(plist->len == 1); assert_nevra_eq(g_ptr_array_index(plist, 0), "dog-1-2.x86_64"); g_ptr_array_unref(plist); hy_goal_free(goal); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); goal = hy_goal_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "pilchard")); fail_if(hy_goal_upgrade_to_selector(goal, sltr)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 2, 0, 0); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_installonly_limit_with_modules) { // most complex installonly test case, includes the k-m packages const char *installonly[] = {"k", "k-m", NULL}; DnfSack *sack = test_globals.sack; dnf_sack_set_installonly(sack, installonly); dnf_sack_set_installonly_limit(sack, 3); dnf_sack_set_running_kernel_fn(sack, mock_running_kernel); HyGoal goal = hy_goal_create(sack); hy_goal_upgrade_all(goal); fail_if(hy_goal_run_flags(goal, 0)); assert_iueo(goal, 2, 0, 5, 0); GPtrArray *erasures = hy_goal_list_erasures(goal, NULL); assert_nevra_eq(g_ptr_array_index(erasures, 0), "k-1-0.x86_64"); assert_nevra_eq(g_ptr_array_index(erasures, 1), "k-m-1-0.x86_64"); assert_nevra_eq(g_ptr_array_index(erasures, 2), "k-freak-1-0-1-0.x86_64"); assert_nevra_eq(g_ptr_array_index(erasures, 3), "k-2-0.x86_64"); assert_nevra_eq(g_ptr_array_index(erasures, 4), "k-m-2-0.x86_64"); g_ptr_array_unref(erasures); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_unneeded) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); userinstalled(sack, goal, "baby"); userinstalled(sack, goal, "dog"); userinstalled(sack, goal, "fool"); userinstalled(sack, goal, "gun"); userinstalled(sack, goal, "jay"); userinstalled(sack, goal, "penny"); userinstalled(sack, goal, "pilchard"); hy_goal_run(goal); GPtrArray *plist = hy_goal_list_unneeded(goal, NULL); ck_assert_int_eq(plist->len, 4); DnfPackage *pkg = g_ptr_array_index(plist, 0); assert_nevra_eq(pkg, "flying-2-9.noarch"); pkg = g_ptr_array_index(plist, 1); assert_nevra_eq(pkg, "penny-lib-4-1.x86_64"); g_ptr_array_unref(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_unneeded) { HySack sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); userinstalled(sack, goal, "baby"); userinstalled(sack, goal, "dog"); userinstalled(sack, goal, "fool"); userinstalled(sack, goal, "gun"); userinstalled(sack, goal, "jay"); userinstalled(sack, goal, "penny"); userinstalled(sack, goal, "pilchard"); hy_goal_run(goal); HyPackageList plist = hy_goal_list_unneeded(goal); ck_assert_int_eq(hy_packagelist_count(plist), 4); HyPackage pkg = hy_packagelist_get(plist, 0); assert_nevra_eq(pkg, "flying-2-9.noarch"); pkg = hy_packagelist_get(plist, 1); assert_nevra_eq(pkg, "penny-lib-4-1.x86_64"); hy_packagelist_free(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_distupgrade_all_keep_arch) { 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, 5, 0, 1); HyPackageList plist = hy_goal_list_upgrades(goal); // gun pkg is not upgraded to latest version of different arch assert_nevra_eq(hy_packagelist_get(plist, 0), "dog-1-2.x86_64"); assert_nevra_eq(hy_packagelist_get(plist, 1), "pilchard-1.2.4-1.i686"); assert_nevra_eq(hy_packagelist_get(plist, 2), "pilchard-1.2.4-1.x86_64"); assert_nevra_eq(hy_packagelist_get(plist, 3), "flying-3.1-0.x86_64"); assert_nevra_eq(hy_packagelist_get(plist, 4), "fool-1-5.noarch"); hy_packagelist_free(plist); plist = hy_goal_list_obsoleted(goal); fail_unless(hy_packagelist_count(plist) == 1); assert_nevra_eq(hy_packagelist_get(plist, 0), "penny-4-1.noarch"); hy_packagelist_free(plist); 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); }
END_TEST START_TEST(test_goal_verify) { HySack sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); fail_unless(hy_goal_run_flags(goal, HY_VERIFY)); fail_unless(hy_goal_list_installs(goal) == NULL); fail_unless(hy_get_errno() == HY_E_NO_SOLUTION); fail_unless(hy_goal_count_problems(goal) == 2); char *expected; char *problem; problem = hy_goal_describe_problem(goal, 0); expected = "nothing provides missing-dep needed by missing-1-0.x86_64"; fail_if(strncmp(problem, expected, strlen(expected))); hy_free(problem); problem = hy_goal_describe_problem(goal, 1); expected = "package conflict-1-0.x86_64 conflicts with ok provided by ok-1-0.x86_64"; fail_if(strncmp(problem, expected, strlen(expected))); hy_free(problem); hy_goal_free(goal); }
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_goal_install_selector_err) { // Test that using the hy_goal_*_selector() methods returns an error for // selectors invalid in this context. HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_ARCH, HY_EQ, "i586"); fail_unless(hy_goal_install_selector(goal, sltr)); fail_unless(hy_get_errno() == HY_E_SELECTOR); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_GT, "semolina"); fail_unless(hy_get_errno() == HY_E_SELECTOR); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); fail_unless(hy_selector_set(sltr, HY_REPO_NAME, HY_EQ, HY_SYSTEM_REPO_NAME)); hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_selector_err) { int rc; g_autoptr(GError) error = NULL; // Test that using the hy_goal_*_selector() methods returns an error for // selectors invalid in this context. HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_ARCH, HY_EQ, "i586"); fail_unless(!hy_goal_install_selector(goal, sltr, &error)); fail_unless(error->code == DNF_ERROR_BAD_SELECTOR); hy_selector_free(sltr); g_clear_error(&error); sltr = hy_selector_create(test_globals.sack); rc = hy_selector_set(sltr, HY_PKG_NAME, HY_GT, "semolina"); fail_unless(rc == DNF_ERROR_BAD_SELECTOR); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); fail_unless(hy_selector_set(sltr, HY_REPO_NAME, HY_EQ, HY_SYSTEM_REPO_NAME)); hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_installonly_limit_with_modules) { // most complex installonly test case, includes the k-m packages const char *installonly[] = {"k", "k-m", NULL}; HySack sack = test_globals.sack; hy_sack_set_installonly(sack, installonly); hy_sack_set_installonly_limit(sack, 3); sack->running_kernel_fn = mock_running_kernel; HyGoal goal = hy_goal_create(sack); hy_goal_upgrade_all(goal); fail_if(hy_goal_run_flags(goal, 0)); assert_iueo(goal, 2, 0, 5, 0); HyPackageList erasures = hy_goal_list_erasures(goal); assert_nevra_eq(hy_packagelist_get(erasures, 0), "k-1-0.x86_64"); assert_nevra_eq(hy_packagelist_get(erasures, 1), "k-m-1-0.x86_64"); assert_nevra_eq(hy_packagelist_get(erasures, 2), "k-freak-1-0-1-0.x86_64"); assert_nevra_eq(hy_packagelist_get(erasures, 3), "k-2-0.x86_64"); assert_nevra_eq(hy_packagelist_get(erasures, 4), "k-m-2-0.x86_64"); hy_packagelist_free(erasures); hy_goal_free(goal); }
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_goal_distupgrade_all_keep_arch) { 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, 5, 0, 1); GPtrArray *plist = hy_goal_list_upgrades(goal, NULL); // gun pkg is not upgraded to latest version of different arch assert_nevra_eq(g_ptr_array_index(plist, 0), "dog-1-2.x86_64"); assert_nevra_eq(g_ptr_array_index(plist, 1), "pilchard-1.2.4-1.i686"); assert_nevra_eq(g_ptr_array_index(plist, 2), "pilchard-1.2.4-1.x86_64"); assert_nevra_eq(g_ptr_array_index(plist, 3), "flying-3.1-0.x86_64"); assert_nevra_eq(g_ptr_array_index(plist, 4), "fool-1-5.noarch"); g_ptr_array_unref(plist); plist = hy_goal_list_obsoleted(goal, NULL); fail_unless(plist->len == 1); assert_nevra_eq(g_ptr_array_index(plist, 0), "penny-4-1.noarch"); g_ptr_array_unref(plist); 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_verify) { g_autoptr(GError) error = NULL; DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); fail_unless(hy_goal_run_flags(goal, DNF_VERIFY)); fail_unless(hy_goal_list_installs(goal, &error) == NULL); fail_unless(error->code == DNF_ERROR_NO_SOLUTION); fail_unless(hy_goal_count_problems(goal) == 2); const char *expected; char *problem; problem = hy_goal_describe_problem(goal, 0); expected = "nothing provides missing-dep needed by missing-1-0.x86_64"; fail_if(strncmp(problem, expected, strlen(expected))); g_free(problem); problem = hy_goal_describe_problem(goal, 1); expected = "package conflict-1-0.x86_64 conflicts with ok provided by ok-1-0.x86_64"; fail_if(strncmp(problem, expected, strlen(expected))); g_free(problem); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_describe_problem_rules) { g_autoptr(GError) error = NULL; DnfSack *sack = test_globals.sack; DnfPackage *pkg = get_latest_pkg(sack, "hello"); HyGoal goal = hy_goal_create(sack); hy_goal_install(goal, pkg); fail_unless(hy_goal_run(goal)); fail_unless(hy_goal_list_installs(goal, &error) == NULL); fail_unless(error->code == DNF_ERROR_NO_SOLUTION); fail_unless(hy_goal_count_problems(goal) > 0); g_auto(GStrv) problems = hy_goal_describe_problem_rules(goal, 0); const char *expected[] = { "conflicting requests", "nothing provides goodbye needed by hello-1-1.noarch" }; for (gint p = 0; p < hy_goal_count_problems(goal); ++p) { fail_if(strncmp(problems[p], expected[p], strlen(expected[p]))); } g_object_unref(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_downgrade) { DnfSack *sack = test_globals.sack; DnfPackage *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); GPtrArray *plist = hy_goal_list_downgrades(goal, NULL); fail_unless(plist->len == 1); DnfPackage *pkg = g_ptr_array_index(plist, 0); ck_assert_str_eq(dnf_package_get_evr(pkg), "6:4.9-3"); GPtrArray *obsoleted = hy_goal_list_obsoleted_by_package(goal, pkg); fail_unless(obsoleted->len == 1); DnfPackage *old_pkg = g_ptr_array_index(obsoleted, 0); ck_assert_str_eq(dnf_package_get_evr(old_pkg), "6:5.0-11"); g_ptr_array_unref(obsoleted); g_ptr_array_unref(plist); hy_goal_free(goal); g_object_unref(to_be_pkg); }
END_TEST START_TEST(test_goal_get_reason) { DnfPackage *pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); hy_goal_install(goal, pkg); g_object_unref(pkg); hy_goal_run(goal); GPtrArray *plist = hy_goal_list_installs(goal, NULL); guint i; int set = 0; for(i = 0; i < plist->len; i++) { pkg = g_ptr_array_index (plist, i); if (!strcmp(dnf_package_get_name(pkg), "walrus")) { set |= 1 << 0; fail_unless(hy_goal_get_reason(goal, pkg) == HY_REASON_USER); } if (!strcmp(dnf_package_get_name(pkg), "semolina")) { set |= 1 << 1; fail_unless(hy_goal_get_reason(goal, pkg) == HY_REASON_DEP); } } fail_unless(set == 3); g_ptr_array_unref(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_protected) { DnfSack *sack = test_globals.sack; DnfPackageSet *protected = dnf_packageset_new(sack); DnfPackage *pkg = by_name_repo(sack, "penny-lib", HY_SYSTEM_REPO_NAME); DnfPackage *pp = by_name_repo(sack, "flying", HY_SYSTEM_REPO_NAME); const char *expected; g_autofree gchar *problem; // when protected_packages set is empty it should remove both packages HyGoal goal = hy_goal_create(sack); DnfPackageSet *empty = dnf_packageset_new(sack); dnf_goal_set_protected(goal, empty); g_object_unref(empty); hy_goal_erase(goal, pkg); fail_if(hy_goal_run_flags(goal, DNF_ALLOW_UNINSTALL)); assert_iueo(goal, 0, 0, 2, 0); hy_goal_free(goal); // fails to uninstall penny-lib because flying is protected goal = hy_goal_create(sack); dnf_packageset_add(protected, pp); dnf_goal_set_protected(goal, protected); hy_goal_erase(goal, pkg); fail_unless(hy_goal_run_flags(goal, DNF_ALLOW_UNINSTALL)); hy_goal_free(goal); // removal of protected package explicitly should trigger error goal = hy_goal_create(sack); dnf_goal_set_protected(goal, protected); hy_goal_erase(goal, pp); fail_unless(hy_goal_run(goal)); fail_unless(hy_goal_count_problems(goal) == 1); problem = hy_goal_describe_problem(goal, 0); expected = "The operation would result in removing " "the following protected packages: flying"; fail_if(g_strcmp0(problem, expected)); hy_goal_free(goal); g_object_unref(protected); g_object_unref(pkg); g_object_unref(pp); }
END_TEST START_TEST(test_goal_list_err) { HyGoal goal = hy_goal_create(test_globals.sack); fail_unless(hy_goal_list_installs(goal) == NULL); fail_unless(hy_get_errno() == HY_E_OP); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_upgrade_disabled_repo) { DnfSack *sack = test_globals.sack; 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)) == 5); hy_goal_free(goal); dnf_sack_repo_enabled(sack, "updates", 0); goal = hy_goal_create(sack); hy_goal_upgrade_all(goal); hy_goal_run(goal); assert_iueo(goal, 0, 1, 0, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_list_err) { g_autoptr(GError) error = NULL; HyGoal goal = hy_goal_create(test_globals.sack); fail_unless(hy_goal_list_installs(goal, &error) == NULL); fail_unless(error->code == DNF_ERROR_INTERNAL_ERROR); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_erase_with_deps) { DnfSack *sack = test_globals.sack; DnfPackage *pkg = by_name_repo(sack, "penny-lib", HY_SYSTEM_REPO_NAME); // by default can not remove penny-lib, flying depends on it: HyGoal goal = hy_goal_create(sack); hy_goal_erase(goal, pkg); fail_unless(hy_goal_run(goal)); hy_goal_free(goal); goal = hy_goal_create(sack); hy_goal_erase(goal, pkg); fail_if(hy_goal_run_flags(goal, DNF_ALLOW_UNINSTALL)); assert_iueo(goal, 0, 0, 2, 0); hy_goal_free(goal); g_object_unref(pkg); }
static void update(HySack sack, HyPackage pkg) { HyGoal goal = hy_goal_create(sack); if (hy_goal_upgrade_to_flags(goal, pkg, HY_CHECK_INSTALLED)) { printf("no package of that name installed, trying install\n"); hy_goal_install(goal, pkg); } if (hy_goal_run(goal)) { dump_goal_errors(goal); // handle errors goto finish; } // handle upgrades HyPackageList plist = hy_goal_list_upgrades(goal); printf("upgrade count: %d\n", hy_packagelist_count(plist)); for (int i = 0; i < hy_packagelist_count(plist); ++i) { HyPackage pkg = hy_packagelist_get(plist, i); char *nvra = hy_package_get_nevra(pkg); char *location = hy_package_get_location(pkg); HyPackageList obsoleted = hy_goal_list_obsoleted_by_package(goal, pkg); HyPackage installed = hy_packagelist_get(obsoleted, 0); char *nvra_installed = hy_package_get_nevra(installed); printf("upgrading: %s using %s\n", nvra, location); printf("\tfrom: %s\n", nvra_installed); printf("\tsize: %lld kB\n", hy_package_get_size(pkg) / 1024); hy_free(nvra_installed); hy_packagelist_free(obsoleted); hy_free(location); hy_free(nvra); } hy_packagelist_free(plist); // handle installs plist = hy_goal_list_installs(goal); printf("install count: %d\n", hy_packagelist_count(plist)); for (int i = 0; i < hy_packagelist_count(plist); ++i) { HyPackage pkg = hy_packagelist_get(plist, i); char *nvra = hy_package_get_nevra(pkg); char *location = hy_package_get_location(pkg); printf("installing: %s using %s\n", nvra, location); printf("\tsize: %lld kB\n", hy_package_get_size(pkg) / 1024); hy_free(location); hy_free(nvra); } hy_packagelist_free(plist); finish: hy_goal_free(goal); }
END_TEST START_TEST(test_goal_upgrade) { DnfPackage *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)); g_object_unref(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 1, 0, 1); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_actions) { DnfPackage *pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_has_actions(goal, DNF_INSTALL)); fail_if(hy_goal_install(goal, pkg)); fail_unless(hy_goal_has_actions(goal, DNF_INSTALL)); g_object_unref(pkg); hy_goal_free(goal); }
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_goal_install) { DnfPackage *pkg = get_latest_pkg(test_globals.sack, "walrus"); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_goal_install(goal, pkg)); g_object_unref(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 2, 0, 0, 0); hy_goal_free(goal); }