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_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_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_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_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); }
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_no_reinstall) { DnfSack *sack = test_globals.sack; DnfPackage *pkg = get_latest_pkg(sack, "penny"); HyGoal goal = hy_goal_create(sack); fail_if(hy_goal_install(goal, pkg)); g_object_unref(pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_update_impossible) { DnfPackage *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)); g_object_unref(pkg); hy_goal_free(goal); }
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_installonly) { const char *installonly[] = {"fool", NULL}; DnfSack *sack = test_globals.sack; dnf_sack_set_installonly(sack, installonly); dnf_sack_set_installonly_limit(sack, 2); DnfPackage *pkg = get_latest_pkg(sack, "fool"); HyGoal goal = hy_goal_create(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, 1, 0, 1, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_log_decisions) { HySack sack = test_globals.sack; HyPackage pkg = get_latest_pkg(sack, "hello"); HyGoal goal = hy_goal_create(sack); hy_goal_install(goal, pkg); HY_LOG_INFO("--- decisions below --->"); const int origsize = logfile_size(sack); hy_goal_run(goal); hy_goal_log_decisions(goal); const int newsize = logfile_size(sack); // check something substantial was added to the logfile: fail_unless(newsize - origsize > 3000); hy_package_free(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_rerun) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); DnfPackage *pkg = get_latest_pkg(sack, "walrus"); hy_goal_install(goal, pkg); fail_if(hy_goal_run(goal)); assert_iueo(goal, 2, 0, 0, 0); g_object_unref(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); g_object_unref(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_describe_problem) { HySack sack = test_globals.sack; HyPackage 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) == NULL); fail_unless(hy_get_errno() == HY_E_NO_SOLUTION); fail_unless(hy_goal_count_problems(goal) > 0); char *problem = hy_goal_describe_problem(goal, 0); const char *expected = "nothing provides goodbye"; fail_if(strncmp(problem, expected, strlen(expected))); hy_free(problem); hy_package_free(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_describe_problem) { 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); char *problem = hy_goal_describe_problem(goal, 0); const char *expected = "nothing provides goodbye"; fail_if(strncmp(problem, expected, strlen(expected))); g_free(problem); g_object_unref(pkg); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_optional) { HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); // test optional selector installation sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "hello"); fail_if(!hy_goal_install_selector_optional(goal, sltr, NULL)); fail_if(hy_goal_run(goal)); hy_selector_free(sltr); assert_iueo(goal, 0, 0, 0, 0); // test optional package installation DnfPackage *pkg = get_latest_pkg(test_globals.sack, "hello"); fail_if(hy_goal_install_optional(goal, pkg)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); g_object_unref(pkg); hy_goal_free(goal); }