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_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_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_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) { 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_sltr_version) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "jay")); fail_if(hy_selector_set(sltr, HY_PKG_VERSION, HY_EQ, "5.0")); HyPackageList plist = hy_selector_matches(sltr); fail_unless(hy_packagelist_count(plist) == 2); hy_packagelist_free(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_reponame_nonexistent) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_GLOB, "*")); fail_if(hy_selector_set(sltr, HY_PKG_REPONAME, HY_EQ, "non-existent")); GPtrArray *plist = hy_selector_matches(sltr); fail_unless(plist->len == 0); g_ptr_array_unref(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_reponame) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "penny")); fail_if(hy_selector_set(sltr, HY_PKG_REPONAME, HY_EQ, "main")); HyPackageList plist = hy_selector_matches(sltr); fail_unless(hy_packagelist_count(plist) == 1); hy_packagelist_free(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_reponame) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "penny")); fail_if(hy_selector_set(sltr, HY_PKG_REPONAME, HY_EQ, "main")); GPtrArray *plist = hy_selector_matches(sltr); fail_unless(plist->len == 1); g_ptr_array_unref(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_reponame_nonexistent) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_GLOB, "*")); fail_if(hy_selector_set(sltr, HY_PKG_REPONAME, HY_EQ, "non-existent")); HyPackageList plist = hy_selector_matches(sltr); fail_unless(hy_packagelist_count(plist) == 0); hy_packagelist_free(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_version) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "jay")); fail_if(hy_selector_set(sltr, HY_PKG_VERSION, HY_EQ, "5.0")); GPtrArray *plist = hy_selector_matches(sltr); fail_unless(plist->len == 2); g_ptr_array_unref(plist); hy_selector_free(sltr); }
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_sltr_provides) { HySelector sltr = hy_selector_create(test_globals.sack); ck_assert_int_eq(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_EQ, "*"), DNF_ERROR_BAD_SELECTOR); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_get_solution) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); HySelector sltr = hy_selector_create(sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "pilchard"); hy_goal_install_selector(goal, sltr,NULL); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "dog"); hy_goal_install_selector(goal, sltr,NULL); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "custard"); hy_goal_install_selector(goal, sltr,NULL); fail_unless(hy_goal_run_flags(goal, DNF_FORCE_BEST)); fail_unless(hy_goal_count_problems(goal) == 2); DnfSolutionAction expected_actions[2][3] = { {DNF_SOLUTION_ACTION_DO_NOT_INSTALL, 0, 0}, {DNF_SOLUTION_ACTION_ALLOW_REMOVE, DNF_SOLUTION_ACTION_DO_NOT_REMOVE, DNF_SOLUTION_ACTION_DO_NOT_INSTALL}}; const gchar *expected_old[2][3] = {{NULL, NULL, NULL}, {"pilchard-1.2.3-1.i686", "pilchard-1.2.3-1.i686", NULL}}; const gchar *expected_new[2][3] = {{"custard", NULL, NULL}, {NULL, NULL, "pilchard"}}; for (gint p = 0; p < hy_goal_count_problems(goal); ++p) { g_autoptr(GPtrArray) slist = hy_goal_get_solution(goal, p); for (guint i = 0; i < slist->len; ++i) { DnfSolution *sol = g_ptr_array_index(slist, i); fail_unless(dnf_solution_get_action(sol) == expected_actions[p][i]); fail_unless(g_strcmp0(dnf_solution_get_old(sol), expected_old[p][i]) == 0); fail_unless(g_strcmp0(dnf_solution_get_new(sol), expected_new[p][i]) == 0); } } hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_sltr_provides_glob) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_GLOB, "*alru*")); GPtrArray *plist = hy_selector_matches(sltr); fail_unless(plist->len == 2); g_ptr_array_unref(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_sltr_provides_glob) { HySelector sltr = hy_selector_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_GLOB, "*alru*")); HyPackageList plist = hy_selector_matches(sltr); fail_unless(hy_packagelist_count(plist) == 2); hy_packagelist_free(plist); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_install_selector_two) { // check that we can add and resolve two selector installs to the Goal HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "semolina"); fail_if(!hy_goal_install_selector(goal, sltr, NULL)); hy_selector_free(sltr); sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "fool"); fail_if(hy_goal_upgrade_selector(goal, sltr)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 1, 0, 1); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_selector) { HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); // test arch forcing sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "semolina"); hy_selector_set(sltr, HY_PKG_ARCH, HY_EQ, "i686"); fail_if(!hy_goal_install_selector(goal, sltr, NULL)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 0, 0, 0); GPtrArray *plist = hy_goal_list_installs(goal, NULL); const char *nvra = dnf_package_get_nevra(g_ptr_array_index(plist, 0)); ck_assert_str_eq(nvra, "semolina-2-0.i686"); g_ptr_array_unref(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_selector_provides_glob) { HySelector sltr = hy_selector_create(test_globals.sack); HyGoal goal = hy_goal_create(test_globals.sack); fail_if(hy_selector_set(sltr, HY_PKG_PROVIDES, HY_GLOB, "P*")); fail_if(hy_goal_erase_selector(goal, sltr)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 1, 0); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_selector_glob) { 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_GLOB, "*emolin*")); fail_if(!hy_goal_install_selector(goal, sltr, NULL)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 0, 0, 0); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_install_selector_nomatch) { HySelector sltr = hy_selector_create(test_globals.sack); HyGoal goal = hy_goal_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "crabalocker"); fail_if(!hy_goal_install_selector(goal, sltr, NULL)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 0, 0); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_selector) { HySelector sltr; HyGoal goal = hy_goal_create(test_globals.sack); // test arch forcing sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "semolina"); hy_selector_set(sltr, HY_PKG_ARCH, HY_EQ, "i686"); fail_if(hy_goal_install_selector(goal, sltr)); hy_selector_free(sltr); fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 0, 0, 0); HyPackageList plist = hy_goal_list_installs(goal); char *nvra = hy_package_get_nevra(hy_packagelist_get(plist, 0)); ck_assert_str_eq(nvra, "semolina-2-0.i686"); hy_free(nvra); hy_packagelist_free(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_forcebest) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); HySelector sltr = hy_selector_create(sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "flying"); hy_goal_upgrade_selector(goal, sltr); fail_unless(hy_goal_run_flags(goal, DNF_FORCE_BEST)); fail_unless(hy_goal_count_problems(goal) == 1); hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_forcebest_arches) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); HySelector sltr = hy_selector_create(sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "gun"); fail_if(hy_goal_upgrade_selector(goal, sltr)); fail_if(hy_goal_run_flags(goal, DNF_FORCE_BEST)); assert_iueo(goal, 0, 0, 0, 0); hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_multilib) { // Tests installation of multilib package. The package is selected via // install query, allowing the depsolver maximum influence on the selection. HySelector sltr = hy_selector_create(test_globals.sack); HyGoal goal = hy_goal_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "semolina"); fail_if(!hy_goal_install_selector(goal, sltr, NULL)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 0, 0, 0); hy_selector_free(sltr); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_distupgrade_selector_nothing) { HyGoal goal = hy_goal_create(test_globals.sack); HySelector sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "P-lib"); fail_if(hy_goal_distupgrade_selector(goal, sltr)); 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 == 0); g_ptr_array_unref(plist); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_distupgrade_selector_nothing) { HyGoal goal = hy_goal_create(test_globals.sack); HySelector sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "P-lib"); fail_if(hy_goal_distupgrade_selector(goal, sltr)); 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) == 0); hy_packagelist_free(plist); hy_goal_free(goal); hy_selector_free(sltr); }
END_TEST START_TEST(test_goal_update_vendor) { DnfSack *sack = test_globals.sack; HyGoal goal = hy_goal_create(sack); HySelector sltr = hy_selector_create(sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "fool"); fail_if(hy_goal_upgrade_selector(goal, sltr)); hy_selector_free(sltr); /* hy_goal_upgrade_all(goal); */ fail_if(hy_goal_run(goal)); assert_iueo(goal, 1, 0, 0, 1); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_install_selector_file) { 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_FILE, HY_EQ|HY_GLOB, "/*/answers")); fail_if(hy_goal_erase_selector(goal, sltr)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 0, 1, 0); GPtrArray *plist = hy_goal_list_erasures(goal, NULL); DnfPackage *pkg = g_ptr_array_index(plist, 0); ck_assert_str_eq("fool", dnf_package_get_name(pkg)); hy_selector_free(sltr); g_ptr_array_unref(plist); hy_goal_free(goal); }
END_TEST START_TEST(test_goal_distupgrade_selector_upgrade) { HyGoal goal = hy_goal_create(test_globals.sack); HySelector sltr = hy_selector_create(test_globals.sack); hy_selector_set(sltr, HY_PKG_NAME, HY_EQ, "flying"); fail_if(hy_goal_distupgrade_selector(goal, sltr)); fail_if(hy_goal_run(goal)); assert_iueo(goal, 0, 1, 0, 0); GPtrArray *plist = hy_goal_list_upgrades(goal, NULL); assert_nevra_eq(g_ptr_array_index(plist, 0), "flying-3-0.noarch"); g_ptr_array_unref(plist); hy_goal_free(goal); hy_selector_free(sltr); }