From: Michael Tremer Date: Tue, 19 Jul 2022 14:11:53 +0000 (+0000) Subject: tests: Add a test that creates and restores a snapshot X-Git-Tag: 0.9.28~675 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2faf8de781d382d6984ccbe2edc0d61f07ed9fd;p=pakfire.git tests: Add a test that creates and restores a snapshot Signed-off-by: Michael Tremer --- diff --git a/.gitignore b/.gitignore index 343cc95c5..4ac99f2b4 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ /tests/libpakfire/parser /tests/libpakfire/progressbar /tests/libpakfire/repo +/tests/libpakfire/snapshot /tests/libpakfire/util /tmp *.py[co] diff --git a/Makefile.am b/Makefile.am index d3c33dc80..b9c4d8fdf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -381,6 +381,7 @@ check_PROGRAMS += \ tests/libpakfire/parser \ tests/libpakfire/progressbar \ tests/libpakfire/repo \ + tests/libpakfire/snapshot \ tests/libpakfire/util dist_tests_libpakfire_main_SOURCES = \ @@ -577,6 +578,18 @@ tests_libpakfire_repo_CFLAGS = \ tests_libpakfire_repo_LDADD = \ $(TESTSUITE_LDADD) +dist_tests_libpakfire_snapshot_SOURCES = \ + tests/libpakfire/snapshot.c + +tests_libpakfire_snapshot_CPPFLAGS = \ + $(TESTSUITE_CPPFLAGS) + +tests_libpakfire_snapshot_CFLAGS = \ + $(TESTSUITE_CFLAGS) + +tests_libpakfire_snapshot_LDADD = \ + $(TESTSUITE_LDADD) + dist_tests_libpakfire_util_SOURCES = \ tests/libpakfire/util.c diff --git a/tests/libpakfire/snapshot.c b/tests/libpakfire/snapshot.c new file mode 100644 index 000000000..b3a761dfa --- /dev/null +++ b/tests/libpakfire/snapshot.c @@ -0,0 +1,64 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2021 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ + +#include +#include +#include + +#include "../testsuite.h" + +#define TEST_PKG1_PATH "data/beep-1.3-2.ip3.x86_64.pfm" + +static int test_create_and_restore(const struct test* t) { + int r = EXIT_FAILURE; + + // Create a temporary file + FILE* f = test_mktemp(NULL); + ASSERT(f); + + // Create the snapshot + ASSERT_SUCCESS(pakfire_snapshot_create(t->pakfire, f)); + + // Determine the size of the snapshot + off_t size = ftell(f); + + LOG("Snapshot has a size of %jd bytes\n", size); + + // Rewind the file descriptor to the beginning + rewind(f); + + // Perform a restore + ASSERT_SUCCESS(pakfire_snapshot_restore(t->pakfire, f)); + + // Everything passed + r = EXIT_SUCCESS; + +FAIL: + if (f) + fclose(f); + + return r; +} + +int main(int argc, char** argv) { + testsuite_add_test(test_create_and_restore); + + return testsuite_run(); +}