summaryrefslogtreecommitdiff
path: root/cmd/libsnap-confine-private
diff options
Diffstat (limited to 'cmd/libsnap-confine-private')
-rw-r--r--cmd/libsnap-confine-private/snap-test.c9
-rw-r--r--cmd/libsnap-confine-private/test-utils-test.c24
-rw-r--r--cmd/libsnap-confine-private/test-utils.c35
-rw-r--r--cmd/libsnap-confine-private/test-utils.h6
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