From 741801bf809816418cfb22ab63bdd094d6464853 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 30 Nov 2017 16:55:03 +0100 Subject: [PATCH] testsuite: Add test which extracts an archive Signed-off-by: Michael Tremer --- src/libpakfire/libpakfire.sym | 1 + tests/libpakfire/archive.c | 42 +++++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 6e0bfc675..af4c8b715 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -320,6 +320,7 @@ global: pakfire_transaction_run; # util + pakfire_access; pakfire_free; pakfire_get_errno; pakfire_path_join; diff --git a/tests/libpakfire/archive.c b/tests/libpakfire/archive.c index d4d51e5c0..08918dca7 100644 --- a/tests/libpakfire/archive.c +++ b/tests/libpakfire/archive.c @@ -24,28 +24,52 @@ #include "../testsuite.h" static const char* TEST_PKG1_PATH = "data/beep-1.3-2.ip3.x86_64.pfm"; +static const char* TEST_PKG1_FILE = "usr/bin/beep"; int test_open(const test_t* t) { - char* path = pakfire_path_join(TEST_SRC_PATH, TEST_PKG1_PATH); - LOG("Trying to open %s\n", path); + char* path = pakfire_path_join(TEST_SRC_PATH, TEST_PKG1_PATH); + LOG("Trying to open %s\n", path); - // Open the archive - PakfireArchive archive = pakfire_archive_open(t->pakfire, path); - assert_return(archive, EXIT_FAILURE); + // Open the archive + PakfireArchive archive = pakfire_archive_open(t->pakfire, path); + assert_return(archive, EXIT_FAILURE); - pakfire_archive_unref(archive); + // Verify the archive + pakfire_archive_verify_status_t verify = pakfire_archive_verify(archive); + assert_return(verify == PAKFIRE_ARCHIVE_VERIFY_OK, EXIT_FAILURE); - pakfire_free(path); + pakfire_archive_unref(archive); + pakfire_free(path); - return EXIT_SUCCESS; + return EXIT_SUCCESS; +} + +int test_extract(const test_t* t) { + char* path = pakfire_path_join(TEST_SRC_PATH, TEST_PKG1_PATH); + + PakfireArchive archive = pakfire_archive_open(t->pakfire, path); + pakfire_free(path); + + // Extract the archive payload + int r = pakfire_archive_extract(archive, NULL, PAKFIRE_ARCHIVE_USE_PAYLOAD); + assert_return(r == 0, EXIT_FAILURE); + + // Check if test file from the archive exists + assert_return(pakfire_access(pakfire_get_path(t->pakfire), + TEST_PKG1_FILE, F_OK) == 0, EXIT_FAILURE); + + pakfire_archive_unref(archive); + + return EXIT_SUCCESS; } int main(int argc, char** argv) { testsuite_init(); - testsuite_t* ts = testsuite_create(1); + testsuite_t* ts = testsuite_create(2); testsuite_add_test(ts, "test_open", test_open); + testsuite_add_test(ts, "test_extract", test_extract); return testsuite_run(ts); } -- 2.39.5