]> git.ipfire.org Git - pakfire.git/commitdiff
tests: Add a test that writes a filelist and reads it back
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 27 Oct 2022 10:30:01 +0000 (10:30 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 27 Oct 2022 10:30:01 +0000 (10:30 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
tests/libpakfire/package.c

index 3e59401cbbbb5dca9c987f472b7dd077ba174760..7bddda75453c12894ce59cd3504da49a2b6f0de0 100644 (file)
@@ -240,11 +240,74 @@ FAIL:
        return r;
 }
 
+static int test_filelist(const struct test* t) {
+       struct pakfire_filelist* filelist = NULL;
+       struct pakfire_file* file = NULL;
+       struct pakfire_package* pkg = NULL;
+       int r = EXIT_FAILURE;
+
+       // Create a filelist
+       ASSERT_SUCCESS(pakfire_filelist_create(&filelist, t->pakfire));
+
+       // Create a file
+       ASSERT_SUCCESS(pakfire_file_create(&file, t->pakfire));
+
+       // Store some path
+       ASSERT_SUCCESS(pakfire_file_set_path(file, "/bin/bash"));
+
+       // Append the file to the filelist
+       ASSERT_SUCCESS(pakfire_filelist_append(filelist, file));
+
+       // Free the file
+       pakfire_file_unref(file);
+       file = NULL;
+
+       ASSERT_EQUALS(pakfire_filelist_size(filelist), 1);
+
+       // Create a new package
+       ASSERT_SUCCESS(pakfire_package_create(&pkg, t->pakfire, NULL,
+               "bash", "1.0-1", "i386"));
+
+       // Set filelist
+       ASSERT_SUCCESS(pakfire_package_set_filelist(pkg, filelist));
+
+       // Drop the filelist
+       pakfire_filelist_unref(filelist);
+       filelist = NULL;
+
+       // Fetch the filelist back from the package
+       ASSERT(filelist = pakfire_package_get_filelist(pkg));
+
+       // The filelist must have a length of one
+       ASSERT_EQUALS(pakfire_filelist_size(filelist), 1);
+
+       for (unsigned int i = 0; i < pakfire_filelist_size(filelist); i++) {
+               ASSERT(file = pakfire_filelist_get(filelist, i));
+
+               // Check the path
+               ASSERT_STRING_EQUALS(pakfire_file_get_path(file), "/bin/bash");
+       }
+
+       // Everything passed
+       r = EXIT_SUCCESS;
+
+FAIL:
+       if (filelist)
+               pakfire_filelist_unref(filelist);
+       if (file)
+               pakfire_file_unref(file);
+       if (pkg)
+               pakfire_package_unref(pkg);
+
+       return r;
+}
+
 int main(int argc, const char* argv[]) {
        testsuite_add_test(test_create);
        testsuite_add_test(test_invalid_inputs);
        testsuite_add_test(test_uuid);
        testsuite_add_test(test_deps);
+       testsuite_add_test(test_filelist);
 
        return testsuite_run(argc, argv);
 }