Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/rpm-software-management/createrepo_c.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAleš Matěj <amatej@redhat.com>2022-03-17 16:29:47 +0300
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>2022-03-29 07:56:13 +0300
commitdc4542488c09f4d51f04f79ea146d6d79085bbc1 (patch)
treee613c4a49cea0776162f7030868e092afb9f5ab8 /tests
parenta5a5cf64c73dcd2c07f4902efef44ec07ae365d7 (diff)
Remove C API for cr_xml_parse_main_metadata_together
It is obsoleted by cr_PkgIterator_new and its API. It also converts some of the tests to using cr_PkgIterator.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_xml_parser_main_metadata_together.c327
1 files changed, 115 insertions, 212 deletions
diff --git a/tests/test_xml_parser_main_metadata_together.c b/tests/test_xml_parser_main_metadata_together.c
index 8ce417d..09a53dd 100644
--- a/tests/test_xml_parser_main_metadata_together.c
+++ b/tests/test_xml_parser_main_metadata_together.c
@@ -29,54 +29,6 @@
#include "createrepo/xml_parser_internal.h"
// Callbacks
-
-static int
-pkgcb(cr_Package *pkg, void *cbdata, GError **err)
-{
- g_assert(pkg);
- g_assert(!err || *err == NULL);
- if (cbdata) *((int *)cbdata) += 1;
- cr_package_free(pkg);
- return CR_CB_RET_OK;
-}
-
-static int
-pkgcb_interrupt(cr_Package *pkg, void *cbdata, GError **err)
-{
- g_assert(pkg);
- g_assert(!err || *err == NULL);
- if (cbdata) *((int *)cbdata) += 1;
- cr_package_free(pkg);
- return CR_CB_RET_ERR;
-}
-
-static int
-newpkgcb(cr_Package **pkg,
- G_GNUC_UNUSED const char *pkgId,
- const char *name,
- G_GNUC_UNUSED const char *arch,
- G_GNUC_UNUSED void *cbdata,
- GError **err)
-{
- g_assert(pkg != NULL);
- g_assert(*pkg == NULL);
- g_assert(pkgId != NULL);
- g_assert(!err || *err == NULL);
-
- *pkg = cr_package_new();
- cr_Package **list;
-
- if (cbdata) {
- cr_Package **pkgl = cbdata;
- for (; *pkgl; pkgl++) {
- continue;
- }
- *pkgl = *pkg;
- }
-
- return CR_CB_RET_OK;
-}
-
static int
newpkgcb_skip_fake_bash(cr_Package **pkg,
G_GNUC_UNUSED const char *pkgId,
@@ -146,230 +98,193 @@ warningcb_interrupt(G_GNUC_UNUSED cr_XmlParserWarningType type,
return CR_CB_RET_ERR;
}
-// Tests
-
static void
-test_cr_xml_parse_main_metadata_together_00(void)
+test_cr_xml_package_iterator_00(void)
{
int parsed = 0;
GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
+ cr_Package *package = NULL;
+
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
+
+ while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
+ parsed++;
+ cr_package_free(package);
+ }
+
+ g_assert(cr_PkgIterator_is_finished(pkg_iterator));
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
+
g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
g_assert_cmpint(parsed, ==, 2);
}
-static void
-test_cr_xml_parse_main_metadata_together_01_out_of_order_pkgs(void)
-{
- int parsed = 0;
- GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY,
- TEST_DIFF_ORDER_FILELISTS,
- TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err != NULL);
- g_assert_cmpint(ret, ==, CRE_XMLPARSER);
- g_clear_error(&tmp_err);
-}
static void
-test_cr_xml_parse_main_metadata_together_02_invalid_path(void)
+test_cr_xml_package_iterator_01_warningcb_interrupt(void)
{
int parsed = 0;
+ int numofwarnings = 0;
GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together("/non/existent/file", TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err != NULL);
- g_assert_cmpint(ret, ==, CRE_NOFILE);
- g_error_free(tmp_err);
-}
+ cr_Package *package = NULL;
-static void
-test_cr_xml_parse_main_metadata_together_03_newpkgcb_returns_null(void)
-{
- int parsed = 0;
- GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- newpkgcb_skip_fake_bash, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
- g_assert_cmpint(parsed, ==, 1);
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ TEST_REPO_02_PRIMARY, TEST_MRF_BAD_TYPE_FIL, TEST_REPO_02_OTHER, NULL, NULL, warningcb_interrupt, &numofwarnings, &tmp_err);
- parsed = 0;
- ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_DIFF_ORDER_FILELISTS, TEST_REPO_02_OTHER,
- newpkgcb_skip_fake_bash, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
- g_assert_cmpint(parsed, ==, 1);
+ while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
+ parsed++;
+ cr_package_free(package);
+ }
- parsed = 0;
- ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_DIFF_ORDER_FILELISTS, TEST_REPO_02_OTHER,
- newpkgcb_skip_fake_bash, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
- g_assert_cmpint(parsed, ==, 1);
-}
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
-static void
-test_cr_xml_parse_main_metadata_together_04_newpkgcb_interrupt(void)
-{
- int parsed = 0;
- GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- newpkgcb_interrupt, &parsed, NULL, NULL, NULL, NULL, &tmp_err);
g_assert(tmp_err != NULL);
- g_error_free(tmp_err);
- g_assert_cmpint(ret, ==, CRE_CBINTERRUPTED);
- g_assert_cmpint(parsed, ==, 1);
+ g_assert_cmpint(parsed, ==, 0);
+ g_assert_cmpint(tmp_err->code, ==, CRE_CBINTERRUPTED);
+ g_assert_cmpint(numofwarnings, ==, 1);
+ g_clear_error(&tmp_err);
}
static void
-test_cr_xml_parse_main_metadata_together_05_pkgcb_interrupt(void)
+test_cr_xml_package_iterator_02_long_primary(void)
{
int parsed = 0;
GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb_interrupt, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err != NULL);
- g_error_free(tmp_err);
- g_assert_cmpint(ret, ==, CRE_CBINTERRUPTED);
- g_assert_cmpint(parsed, ==, 1);
-}
+ cr_Package *package = NULL;
+
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ TEST_LONG_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
+
+ while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
+ parsed++;
+ cr_package_free(package);
+ }
+
+ g_assert(cr_PkgIterator_is_finished(pkg_iterator));
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
-static void
-test_cr_xml_parse_main_metadata_together_06_warnings_bad_file_type(void)
-{
- int parsed = 0;
- char *warnmsgs;
- GError *tmp_err = NULL;
- GString *warn_strings = g_string_new(0);
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_MRF_BAD_TYPE_FIL, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, &parsed, warningcb, warn_strings, &tmp_err);
g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
g_assert_cmpint(parsed, ==, 2);
- warnmsgs = g_string_free(warn_strings, FALSE);
- g_assert_cmpstr(warnmsgs, ==, "Unknown file type \"foo\";");
- g_free(warnmsgs);
}
static void
-test_cr_xml_parse_main_metadata_together_07_warningcb_interrupt(void)
+test_cr_xml_package_iterator_03_out_of_order_pkgs(void)
{
- int numofwarnings = 0;
GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_REPO_02_PRIMARY, TEST_MRF_BAD_TYPE_FIL, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, NULL, warningcb_interrupt, &numofwarnings,
- &tmp_err);
+ cr_Package *package = NULL;
+
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ TEST_REPO_02_PRIMARY, TEST_DIFF_ORDER_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
+
+ package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err);
+
+ g_assert(package == NULL);
g_assert(tmp_err != NULL);
- g_error_free(tmp_err);
- g_assert_cmpint(ret, ==, CRE_CBINTERRUPTED);
- g_assert_cmpint(numofwarnings, ==, 1);
+
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
}
static void
-test_cr_xml_parse_main_metadata_together_071_multiple_warningcb(void)
+test_cr_xml_package_iterator_04_invalid_path(void)
{
- char *warnmsgs;
- GString *warn_strings = g_string_new(0);
- cr_Package *list_of_pkgs[2] = {NULL, NULL};
GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_PRIMARY_MULTI_WARN_00, TEST_FILELISTS_MULTI_WARN_00, TEST_OTHER_MULTI_WARN_00,
- newpkgcb, &list_of_pkgs, NULL, NULL, warningcb, warn_strings, &tmp_err);
- g_assert(tmp_err == NULL);
- g_assert(list_of_pkgs[0] != NULL);
- g_assert(list_of_pkgs[1] != NULL);
- cr_package_free(list_of_pkgs[0]);
- cr_package_free(list_of_pkgs[1]);
- g_assert_cmpint(ret, ==, CRE_OK);
- warnmsgs = g_string_free(warn_strings, FALSE);
- g_assert_cmpstr(warnmsgs, ==, "Unknown element \"fooelement\";Missing attribute \"type\" of a package element;Unknown element \"foo\";Conversion of \"foobar\" to integer failed;Unknown element \"bar\";Missing attribute \"arch\" of a package element;Unknown file type \"xxx\";Unknown element \"bar\";Missing attribute \"name\" of a package element;Unknown element \"bar\";Conversion of \"xxx\" to integer failed;");
- g_free(warnmsgs);
-}
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ "/non/existing/file.xml", TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
-static void
-test_cr_xml_parse_main_metadata_together_08_long_primary(void)
-{
- int parsed = 0;
- GError *tmp_err = NULL;
- int ret = cr_xml_parse_main_metadata_together(TEST_LONG_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER,
- NULL, NULL, pkgcb, &parsed, NULL, NULL, &tmp_err);
- g_assert(tmp_err == NULL);
- g_assert_cmpint(ret, ==, CRE_OK);
- g_assert_cmpint(parsed, ==, 2);
+ g_assert(pkg_iterator == NULL);
+ g_assert(tmp_err != NULL);
}
static void
-test_cr_xml_package_iterator_00(void)
+test_cr_xml_package_iterator_05_newpkgcb_returns_null(void)
{
int parsed = 0;
GError *tmp_err = NULL;
cr_Package *package = NULL;
cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
- TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
+ TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, newpkgcb_skip_fake_bash, NULL, NULL, NULL, &tmp_err);
while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
parsed++;
cr_package_free(package);
}
- g_assert(cr_PkgIterator_is_finished(pkg_iterator));
cr_PkgIterator_free(pkg_iterator, &tmp_err);
g_assert(tmp_err == NULL);
- g_assert_cmpint(parsed, ==, 2);
+ g_assert_cmpint(parsed, ==, 1);
}
+static void
+test_cr_xml_package_iterator_06_newpkgcb_interrupt(void)
+{
+ GError *tmp_err = NULL;
+ cr_Package *package = NULL;
+ int new_cb_count = 0;
+
+ cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
+ TEST_REPO_02_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, newpkgcb_interrupt, &new_cb_count, NULL, NULL, &tmp_err);
+
+ package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err);
+
+ g_assert(package == NULL);
+ g_assert(tmp_err != NULL);
+ g_assert_cmpint(new_cb_count, ==, 1);
+
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
+}
static void
-test_cr_xml_package_iterator_01_warningcb_interrupt(void)
+test_cr_xml_package_iterator_07_warnings_bad_file_type(void)
{
- int parsed = 0;
- int numofwarnings = 0;
GError *tmp_err = NULL;
cr_Package *package = NULL;
+ GString *warn_strings = g_string_new(0);
+ int parsed = 0;
cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
- TEST_REPO_02_PRIMARY, TEST_MRF_BAD_TYPE_FIL, TEST_REPO_02_OTHER, NULL, NULL, warningcb_interrupt, &numofwarnings, &tmp_err);
+ TEST_REPO_02_PRIMARY, TEST_MRF_BAD_TYPE_FIL, TEST_REPO_02_OTHER, NULL, NULL, warningcb, warn_strings, &tmp_err);
while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
parsed++;
cr_package_free(package);
}
- cr_PkgIterator_free(pkg_iterator, &tmp_err);
+ g_assert(tmp_err == NULL);
+ g_assert_cmpint(parsed, ==, 2);
+ char *warnmsgs = g_string_free(warn_strings, FALSE);
+ g_assert_cmpstr(warnmsgs, ==, "Unknown file type \"foo\";");
+ g_free(warnmsgs);
- g_assert(tmp_err != NULL);
- g_assert_cmpint(parsed, ==, 0);
- g_assert_cmpint(tmp_err->code, ==, CRE_CBINTERRUPTED);
- g_assert_cmpint(numofwarnings, ==, 1);
- g_clear_error(&tmp_err);
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
}
static void
-test_cr_xml_package_iterator_02_long_primary(void)
+test_cr_xml_package_iterator_08_multiple_warningscb(void)
{
- int parsed = 0;
GError *tmp_err = NULL;
cr_Package *package = NULL;
+ GString *warn_strings = g_string_new(0);
+ int parsed = 0;
cr_PkgIterator *pkg_iterator = cr_PkgIterator_new(
- TEST_LONG_PRIMARY, TEST_REPO_02_FILELISTS, TEST_REPO_02_OTHER, NULL, NULL, NULL, NULL, &tmp_err);
+ TEST_PRIMARY_MULTI_WARN_00, TEST_FILELISTS_MULTI_WARN_00, TEST_OTHER_MULTI_WARN_00, NULL, NULL, warningcb, warn_strings, &tmp_err);
while ((package = cr_PkgIterator_parse_next(pkg_iterator, &tmp_err))) {
parsed++;
cr_package_free(package);
}
- g_assert(cr_PkgIterator_is_finished(pkg_iterator));
- cr_PkgIterator_free(pkg_iterator, &tmp_err);
-
g_assert(tmp_err == NULL);
g_assert_cmpint(parsed, ==, 2);
+ char *warnmsgs = g_string_free(warn_strings, FALSE);
+ g_assert_cmpstr(warnmsgs, ==, "Unknown element \"fooelement\";Missing attribute \"type\" of a package element;Unknown element \"foo\";Conversion of \"foobar\" to integer failed;Unknown element \"bar\";Missing attribute \"arch\" of a package element;Unknown file type \"xxx\";Unknown element \"bar\";Missing attribute \"name\" of a package element;Unknown element \"bar\";Conversion of \"xxx\" to integer failed;");
+ g_free(warnmsgs);
+
+ cr_PkgIterator_free(pkg_iterator, &tmp_err);
}
int
@@ -377,36 +292,6 @@ main(int argc, char *argv[])
{
g_test_init(&argc, &argv, NULL);
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_00",
- test_cr_xml_parse_main_metadata_together_00);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_01_out_of_order_pkgs",
- test_cr_xml_parse_main_metadata_together_01_out_of_order_pkgs);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_02_invalid_path",
- test_cr_xml_parse_main_metadata_together_02_invalid_path);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_03_newpkgcb_returns_null",
- test_cr_xml_parse_main_metadata_together_03_newpkgcb_returns_null);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_04_newpkgcb_interrupt",
- test_cr_xml_parse_main_metadata_together_04_newpkgcb_interrupt);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_05_pkgcb_interrupt",
- test_cr_xml_parse_main_metadata_together_05_pkgcb_interrupt);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_06_warnings_bad_file_type",
- test_cr_xml_parse_main_metadata_together_06_warnings_bad_file_type);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_07_warningcb_interrupt",
- test_cr_xml_parse_main_metadata_together_07_warningcb_interrupt);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_08_long_primary",
- test_cr_xml_parse_main_metadata_together_08_long_primary);
-
- g_test_add_func("/xml_parser_main_metadata/test_cr_xml_parse_main_metadata_together_071_multiple_warningcb",
- test_cr_xml_parse_main_metadata_together_071_multiple_warningcb);
-
g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_00",
test_cr_xml_package_iterator_00);
@@ -416,5 +301,23 @@ main(int argc, char *argv[])
g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_02_long_primary",
test_cr_xml_package_iterator_02_long_primary);
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_03_out_of_order_pkgs",
+ test_cr_xml_package_iterator_03_out_of_order_pkgs);
+
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_04_invalid_path",
+ test_cr_xml_package_iterator_04_invalid_path);
+
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_05_newpkgcb_returns_null",
+ test_cr_xml_package_iterator_05_newpkgcb_returns_null);
+
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_06_newpkgcb_interrupt",
+ test_cr_xml_package_iterator_06_newpkgcb_interrupt);
+
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_07_warnings_bad_file_type",
+ test_cr_xml_package_iterator_07_warnings_bad_file_type);
+
+ g_test_add_func("/xml_parser_main_metadata/test_cr_xml_package_iterator_08_multiple_warningscb",
+ test_cr_xml_package_iterator_08_multiple_warningscb);
+
return g_test_run();
}