diff options
Diffstat (limited to 'cmd/libsnap-confine-private')
| -rw-r--r-- | cmd/libsnap-confine-private/snap-test.c | 9 | ||||
| -rw-r--r-- | cmd/libsnap-confine-private/test-utils-test.c | 24 | ||||
| -rw-r--r-- | cmd/libsnap-confine-private/test-utils.c | 35 | ||||
| -rw-r--r-- | cmd/libsnap-confine-private/test-utils.h | 6 |
4 files changed, 71 insertions, 3 deletions
diff --git a/cmd/libsnap-confine-private/snap-test.c b/cmd/libsnap-confine-private/snap-test.c index 1141531319..9499703cdd 100644 --- a/cmd/libsnap-confine-private/snap-test.c +++ b/cmd/libsnap-confine-private/snap-test.c @@ -405,7 +405,9 @@ static void test_sc_snap_drop_instance_key_short_dest_max(void) if (g_test_subprocess()) { char dest[SNAP_NAME_LEN + 1] = { 0 }; /* 40 chars (max valid length), pretend dest is the same length, no space for terminator */ - sc_snap_drop_instance_key("01234567890123456789012345678901234567890", dest, sizeof dest - 1); + sc_snap_drop_instance_key + ("01234567890123456789012345678901234567890", dest, + sizeof dest - 1); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -437,7 +439,8 @@ static void test_sc_snap_drop_instance_key_basic(void) memset(name, 0xff, sizeof name); /* 40 chars - snap name length */ - sc_snap_drop_instance_key("0123456789012345678901234567890123456789", name, sizeof name); + sc_snap_drop_instance_key("0123456789012345678901234567890123456789", + name, sizeof name); g_assert_cmpstr(name, ==, "0123456789012345678901234567890123456789"); } @@ -570,7 +573,7 @@ static void __attribute__((constructor)) init(void) g_test_add_func("/snap/sc_snap_drop_instance_key/short_dest2", test_sc_snap_drop_instance_key_short_dest2); g_test_add_func("/snap/sc_snap_drop_instance_key/short_dest_max", - test_sc_snap_drop_instance_key_short_dest_max); + test_sc_snap_drop_instance_key_short_dest_max); g_test_add_func("/snap/sc_snap_split_instance_name/basic", test_sc_snap_split_instance_name_basic); diff --git a/cmd/libsnap-confine-private/test-utils-test.c b/cmd/libsnap-confine-private/test-utils-test.c index cd760a1e8b..6d0a2d0cac 100644 --- a/cmd/libsnap-confine-private/test-utils-test.c +++ b/cmd/libsnap-confine-private/test-utils-test.c @@ -39,7 +39,31 @@ static void test_rm_rf_tmp(void) g_test_trap_assert_failed(); } +static void test_test_argc_argv(void) +{ + // Check that test_argc_argv() correctly stores data + int argc = 0; + char **argv = NULL; + + test_argc_argv(&argc, &argv, NULL); + g_assert_cmpint(argc, ==, 0); + g_assert_nonnull(argv); + g_assert_null(argv[0]); + + argc = 0; + argv = NULL; + + test_argc_argv(&argc, &argv, "zero", "one", "two", NULL); + g_assert_cmpint(argc, ==, 3); + g_assert_nonnull(argv); + g_assert_cmpstr(argv[0], ==, "zero"); + g_assert_cmpstr(argv[1], ==, "one"); + g_assert_cmpstr(argv[2], ==, "two"); + g_assert_null(argv[3]); +} + static void __attribute__((constructor)) init(void) { g_test_add_func("/test-utils/rm_rf_tmp", test_rm_rf_tmp); + g_test_add_func("/test-utils/test_argc_argv", test_test_argc_argv); } diff --git a/cmd/libsnap-confine-private/test-utils.c b/cmd/libsnap-confine-private/test-utils.c index ab13ce4b7c..c3e17a18d9 100644 --- a/cmd/libsnap-confine-private/test-utils.c +++ b/cmd/libsnap-confine-private/test-utils.c @@ -16,6 +16,7 @@ */ #include "test-utils.h" +#include "string-utils.h" #include "error.h" #include "utils.h" @@ -71,3 +72,37 @@ void rm_rf_tmp(const char *dir) g_free(argv[3]); g_free(argv); } + +void + __attribute__((sentinel)) test_argc_argv(int *argcp, char ***argvp, ...) +{ + int argc = 0; + char **argv = NULL; + va_list ap; + + /* find out how many elements there are */ + va_start(ap, argvp); + while (NULL != va_arg(ap, const char *)) { + argc += 1; + } + va_end(ap); + + /* argc + terminating NULL entry */ + argv = calloc(argc + 1, sizeof argv[0]); + g_assert_nonnull(argv); + + va_start(ap, argvp); + for (int i = 0; i < argc; i++) { + const char *arg = va_arg(ap, const char *); + char *arg_copy = sc_strdup(arg); + g_test_queue_free(arg_copy); + argv[i] = arg_copy; + } + va_end(ap); + + /* free argv last, so that entries do not leak */ + g_test_queue_free(argv); + + *argcp = argc; + *argvp = argv; +} diff --git a/cmd/libsnap-confine-private/test-utils.h b/cmd/libsnap-confine-private/test-utils.h index e13ffcbfd7..2b41ed93a3 100644 --- a/cmd/libsnap-confine-private/test-utils.h +++ b/cmd/libsnap-confine-private/test-utils.h @@ -23,4 +23,10 @@ */ void rm_rf_tmp(const char *dir); +/** + * Create an argc + argv pair out of a NULL terminated argument list. + **/ +void + __attribute__((sentinel)) test_argc_argv(int *argcp, char ***argvp, ...); + #endif |
