test-tar-extract: add a binary wrapping tar_x() for manual testing

We'll probably want to turn this into a test in the integration tests.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2025-10-16 08:22:33 +02:00
committed by Lennart Poettering
parent 53ff5b361f
commit 1929f43199
2 changed files with 42 additions and 0 deletions
+5
View File
@@ -93,6 +93,10 @@ executables += [
'name' : 'systemd-import-generator',
'sources' : files('import-generator.c'),
},
test_template + {
'sources' : files('test-tar-extract.c'),
'type' : 'manual',
},
test_template + {
'sources' : files('test-qcow2.c'),
'objects' : ['systemd-importd'],
@@ -100,6 +104,7 @@ executables += [
'conditions' : ['HAVE_ZLIB'],
'type' : 'manual',
},
]
install_data('org.freedesktop.import1.conf',
+37
View File
@@ -0,0 +1,37 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "libarchive-util.h"
#include "main-func.h"
#include "tar-util.h"
#include "tests.h"
static int run(int argc, char **argv) {
int r;
test_setup_logging(LOG_DEBUG);
if (argc != 3)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Need two arguments exactly: <input> <output>");
r = dlopen_libarchive();
if (r < 0)
return r;
_cleanup_close_ int input_fd = open(argv[1], O_RDONLY | O_CLOEXEC);
if (input_fd < 0)
return log_error_errno(input_fd, "Cannot open %s: %m", argv[1]);
_cleanup_close_ int output_fd = open(argv[2], O_DIRECTORY | O_CLOEXEC);
if (output_fd < 0)
return log_error_errno(output_fd, "Cannot open %s: %m", argv[2]);
r = tar_x(input_fd, output_fd, /* flags= */ TAR_SELINUX);
if (r < 0)
return log_error_errno(r, "tar_x failed: %m");
return 0;
}
DEFINE_MAIN_FUNCTION(run);