]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
testsuite: introduce and use EXEC_TOOL() macro
authorEmil Velikov <emil.l.velikov@gmail.com>
Fri, 13 Jun 2025 16:16:09 +0000 (17:16 +0100)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Mon, 16 Jun 2025 12:37:42 +0000 (07:37 -0500)
Swap the currect EXEC_DEPMOD and EXEC_MODPROBE with a slightly more
generic macro - EXEC_TOOL based off them.

Update all in-tree instances of test_spawn_prog() to use it.

This will make follow-up work (removing the noreturn/exit) a bit easier
and more consistent.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/371
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
testsuite/test-depmod.c
testsuite/test-modinfo.c
testsuite/test-modprobe.c
testsuite/test-weakdep.c
testsuite/testsuite.h

index 060a5fb03ec725ae529743ec9c21559f796c3a78..9ac20d11d46ab90b98548982f5e37bc9eabb6be9 100644 (file)
 
 #include "testsuite.h"
 
-#define EXEC_DEPMOD(...)                     \
-       test_spawn_prog(TOOLS_DIR "/depmod", \
-                       (const char *[]){ TOOLS_DIR "/depmod", ##__VA_ARGS__, NULL })
-
 #define MODULES_UNAME "4.4.4"
 #define MODULES_ORDER_ROOTFS TESTSUITE_ROOTFS "test-depmod/modules-order-compressed"
 #define MODULES_ORDER_LIB_MODULES MODULES_ORDER_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_modules_order_for_compressed(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_modules_order_for_compressed,
@@ -46,7 +42,7 @@ DEFINE_TEST(depmod_modules_order_for_compressed,
        MODULES_OUTDIR_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_modules_outdir(void)
 {
-       EXEC_DEPMOD("--outdir", "/outdir/");
+       EXEC_TOOL(depmod, "--outdir", "/outdir/");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_modules_outdir,
@@ -70,7 +66,7 @@ DEFINE_TEST(depmod_modules_outdir,
        SEARCH_ORDER_SIMPLE_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_search_order_simple(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_search_order_simple,
@@ -92,12 +88,12 @@ DEFINE_TEST(depmod_search_order_simple,
 #define MODULES_ANOTHER_MODDIR_ROOTFS TESTSUITE_ROOTFS "test-depmod/another-moddir"
 static noreturn int depmod_another_moddir(void)
 {
-       EXEC_DEPMOD("-m", ANOTHER_MODDIR);
+       EXEC_TOOL(depmod, "-m", ANOTHER_MODDIR);
        exit(EXIT_FAILURE);
 }
 static noreturn int depmod_another_moddir_relative(void)
 {
-       EXEC_DEPMOD("-m", RELATIVE_MODDIR);
+       EXEC_TOOL(depmod, "-m", RELATIVE_MODDIR);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_another_moddir,
@@ -133,7 +129,7 @@ DEFINE_TEST(depmod_another_moddir_relative,
        SEARCH_ORDER_SAME_PREFIX_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_search_order_same_prefix(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_search_order_same_prefix,
@@ -153,7 +149,7 @@ DEFINE_TEST(depmod_search_order_same_prefix,
 #define DETECT_LOOP_ROOTFS TESTSUITE_ROOTFS "test-depmod/detect-loop"
 static noreturn int depmod_detect_loop(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_detect_loop,
@@ -173,7 +169,7 @@ DEFINE_TEST(depmod_detect_loop,
        SEARCH_ORDER_EXTERNAL_FIRST_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_search_order_external_first(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_search_order_external_first,
@@ -196,7 +192,7 @@ DEFINE_TEST(depmod_search_order_external_first,
        SEARCH_ORDER_EXTERNAL_LAST_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_search_order_external_last(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_search_order_external_last,
@@ -218,7 +214,7 @@ DEFINE_TEST(depmod_search_order_external_last,
        SEARCH_ORDER_OVERRIDE_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_search_order_override(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_search_order_override,
@@ -239,7 +235,7 @@ DEFINE_TEST(depmod_search_order_override,
 #define CHECK_WEAKDEP_LIB_MODULES CHECK_WEAKDEP_ROOTFS MODULE_DIRECTORY "/" MODULES_UNAME
 static noreturn int depmod_check_weakdep(void)
 {
-       EXEC_DEPMOD();
+       EXEC_TOOL(depmod);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(depmod_check_weakdep,
index d91cde1645ce45fdfb81bc42807b481f8717e3d3..9bb9a485151de36bfa5e8bc4cdf329ba69bc04f6 100644 (file)
 
 #include "testsuite.h"
 
-static const char *progname = TOOLS_DIR "/modinfo";
-
-#define DEFINE_MODINFO_TEST(_field, _flavor, ...)                   \
-       static noreturn int test_modinfo_##_field(void)             \
-       {                                                           \
-               const char *const args[] = {                        \
-                       progname, "-F", #_field, __VA_ARGS__, NULL, \
-               };                                                  \
-               test_spawn_prog(progname, args);                    \
-               exit(EXIT_FAILURE);                                 \
-       }                                                           \
+#define DEFINE_MODINFO_TEST(_field, _flavor, ...)               \
+       static noreturn int test_modinfo_##_field(void)         \
+       {                                                       \
+               EXEC_TOOL(modinfo, "-F", #_field, __VA_ARGS__); \
+               exit(EXIT_FAILURE);                             \
+       }                                                       \
        DEFINE_TEST(test_modinfo_##_field, \
        .description = "check " #_field " output of modinfo for different architectures", \
        .config = { \
@@ -60,12 +55,7 @@ DEFINE_MODINFO_SIGN_TEST(sig_hashalgo);
 #if 0
 static noreturn int test_modinfo_signature(void)
 {
-       const char *const args[] = {
-               progname,
-               NULL,
-       };
-
-       test_spawn_prog(progname, args);
+       EXEC_TOOL(modinfo);
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(test_modinfo_signature,
@@ -80,15 +70,7 @@ DEFINE_TEST(test_modinfo_signature,
 
 static noreturn int test_modinfo_external(void)
 {
-       const char *const args[] = {
-               // clang-format off
-               progname,
-               "-F", "filename",
-               "mod-simple",
-               NULL,
-               // clang-format on
-       };
-       test_spawn_prog(progname, args);
+       EXEC_TOOL(modinfo, "-F", "filename", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(test_modinfo_external,
@@ -103,14 +85,7 @@ DEFINE_TEST(test_modinfo_external,
 
 static noreturn int test_modinfo_builtin(void)
 {
-       const char *const args[] = {
-               // clang-format off
-               progname,
-               "intel_uncore",
-               NULL,
-               // clang-format on
-       };
-       test_spawn_prog(progname, args);
+       EXEC_TOOL(modinfo, "intel_uncore");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(test_modinfo_builtin,
index 951dd65c2055223a343960447ad8a9ad2fc7aa8a..5d7764a8ea3d7e012441fd7250cc212b1bbe75e3 100644 (file)
 
 #include "testsuite.h"
 
-#define EXEC_MODPROBE(...)                     \
-       test_spawn_prog(TOOLS_DIR "/modprobe", \
-                       (const char *[]){ TOOLS_DIR "/modprobe", ##__VA_ARGS__, NULL })
-
 static noreturn int modprobe_show_depends(void)
 {
-       EXEC_MODPROBE("--show-depends", "mod-loop-a");
+       EXEC_TOOL(modprobe, "--show-depends", "mod-loop-a");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_show_depends,
@@ -34,7 +30,7 @@ DEFINE_TEST(modprobe_show_depends,
 
 static noreturn int modprobe_show_depends2(void)
 {
-       EXEC_MODPROBE("--show-depends", "mod-simple");
+       EXEC_TOOL(modprobe, "--show-depends", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_show_depends2,
@@ -57,7 +53,7 @@ DEFINE_TEST_WITH_FUNC(modprobe_show_depends_no_load, modprobe_show_depends2,
 
 static noreturn int modprobe_show_alias_to_none(void)
 {
-       EXEC_MODPROBE("--show-depends", "--ignore-install", "mod-simple");
+       EXEC_TOOL(modprobe, "--show-depends", "--ignore-install", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_show_alias_to_none,
@@ -74,7 +70,7 @@ DEFINE_TEST(modprobe_show_alias_to_none,
 
 static noreturn int modprobe_show_exports(void)
 {
-       EXEC_MODPROBE("--show-exports", "/mod-loop-a.ko");
+       EXEC_TOOL(modprobe, "--show-exports", "/mod-loop-a.ko");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_show_exports,
@@ -89,7 +85,7 @@ DEFINE_TEST(modprobe_show_exports,
 
 static noreturn int modprobe_show_exports_module(void)
 {
-       EXEC_MODPROBE("--show-exports", "mod-loop-b");
+       EXEC_TOOL(modprobe, "--show-exports", "mod-loop-b");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_show_exports_module,
@@ -105,7 +101,7 @@ DEFINE_TEST(modprobe_show_exports_module,
 
 static noreturn int modprobe_builtin(void)
 {
-       EXEC_MODPROBE("unix");
+       EXEC_TOOL(modprobe, "unix");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_builtin, .description = "check if modprobe return 0 for builtin",
@@ -116,7 +112,7 @@ DEFINE_TEST(modprobe_builtin, .description = "check if modprobe return 0 for bui
 
 static noreturn int modprobe_builtin_lookup_only(void)
 {
-       EXEC_MODPROBE("-R", "unix");
+       EXEC_TOOL(modprobe, "-R", "unix");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_builtin_lookup_only,
@@ -131,7 +127,7 @@ DEFINE_TEST(modprobe_builtin_lookup_only,
 
 static noreturn int modprobe_softdep_loop(void)
 {
-       EXEC_MODPROBE("mod-loop-b");
+       EXEC_TOOL(modprobe, "mod-loop-b");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_softdep_loop,
@@ -146,7 +142,7 @@ DEFINE_TEST(modprobe_softdep_loop,
 
 static noreturn int modprobe_weakdep_loop(void)
 {
-       EXEC_MODPROBE("mod-loop-b");
+       EXEC_TOOL(modprobe, "mod-loop-b");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_weakdep_loop,
@@ -162,7 +158,7 @@ DEFINE_TEST(modprobe_weakdep_loop,
 
 static noreturn int modprobe_install_cmd_loop(void)
 {
-       EXEC_MODPROBE("mod-loop-a");
+       EXEC_TOOL(modprobe, "mod-loop-a");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_install_cmd_loop,
@@ -181,7 +177,7 @@ DEFINE_TEST(modprobe_install_cmd_loop,
 
 static noreturn int modprobe_param_kcmdline_show_deps(void)
 {
-       EXEC_MODPROBE("--show-depends", "mod-simple");
+       EXEC_TOOL(modprobe, "--show-depends", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_param_kcmdline_show_deps,
@@ -196,7 +192,7 @@ DEFINE_TEST(modprobe_param_kcmdline_show_deps,
 
 static noreturn int modprobe_param_kcmdline(void)
 {
-       EXEC_MODPROBE("-c");
+       EXEC_TOOL(modprobe, "-c");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST_WITH_FUNC(modprobe_param_kcmdline2, modprobe_param_kcmdline,
@@ -283,7 +279,7 @@ DEFINE_TEST_WITH_FUNC(modprobe_param_kcmdline9, modprobe_param_kcmdline,
 
 static noreturn int modprobe_force(void)
 {
-       EXEC_MODPROBE("--force", "mod-simple");
+       EXEC_TOOL(modprobe, "--force", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_force,
@@ -298,7 +294,7 @@ DEFINE_TEST(modprobe_force,
 
 static noreturn int modprobe_force_modversion(void)
 {
-       EXEC_MODPROBE("--force-modversion", "mod-simple");
+       EXEC_TOOL(modprobe, "--force-modversion", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_force_modversion,
@@ -313,7 +309,7 @@ DEFINE_TEST(modprobe_force_modversion,
 
 static noreturn int modprobe_force_vermagic(void)
 {
-       EXEC_MODPROBE("--force-vermagic", "mod-simple");
+       EXEC_TOOL(modprobe, "--force-vermagic", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_force_vermagic,
@@ -328,7 +324,7 @@ DEFINE_TEST(modprobe_force_vermagic,
 
 static noreturn int modprobe_oldkernel(void)
 {
-       EXEC_MODPROBE("mod-simple");
+       EXEC_TOOL(modprobe, "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_oldkernel,
@@ -343,7 +339,7 @@ DEFINE_TEST(modprobe_oldkernel,
 
 static noreturn int modprobe_oldkernel_force(void)
 {
-       EXEC_MODPROBE("--force", "mod-simple");
+       EXEC_TOOL(modprobe, "--force", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_oldkernel_force,
@@ -358,7 +354,7 @@ DEFINE_TEST(modprobe_oldkernel_force,
 
 static noreturn int modprobe_oldkernel_force_modversion(void)
 {
-       EXEC_MODPROBE("--force-modversion", "mod-simple");
+       EXEC_TOOL(modprobe, "--force-modversion", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_oldkernel_force_modversion,
@@ -373,7 +369,7 @@ DEFINE_TEST(modprobe_oldkernel_force_modversion,
 
 static noreturn int modprobe_oldkernel_force_vermagic(void)
 {
-       EXEC_MODPROBE("--force-vermagic", "mod-simple");
+       EXEC_TOOL(modprobe, "--force-vermagic", "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_oldkernel_force_vermagic,
@@ -388,7 +384,7 @@ DEFINE_TEST(modprobe_oldkernel_force_vermagic,
 
 static noreturn int modprobe_external(void)
 {
-       EXEC_MODPROBE("mod-simple");
+       EXEC_TOOL(modprobe, "mod-simple");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_external,
@@ -403,7 +399,7 @@ DEFINE_TEST(modprobe_external,
 
 static noreturn int modprobe_module_from_abspath(void)
 {
-       EXEC_MODPROBE("/home/foo/mod-simple.ko");
+       EXEC_TOOL(modprobe, "/home/foo/mod-simple.ko");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_module_from_abspath,
@@ -423,7 +419,7 @@ static noreturn int modprobe_module_from_relpath(void)
                exit(EXIT_FAILURE);
        }
 
-       EXEC_MODPROBE("./mod-simple.ko");
+       EXEC_TOOL(modprobe, "./mod-simple.ko");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_module_from_relpath,
index 49b1a7b3621d5d91d82039657407950ec290d206..c7c034d59576d95cb1fbbfc1b80065b2459a0ed5 100644 (file)
 
 #include "testsuite.h"
 
-#define EXEC_MODPROBE(...)                     \
-       test_spawn_prog(TOOLS_DIR "/modprobe", \
-                       (const char *[]){ TOOLS_DIR "/modprobe", ##__VA_ARGS__, NULL })
-
 static int test_weakdep(void)
 {
        static const char *const mod_name[] = {
@@ -85,7 +81,7 @@ DEFINE_TEST(test_weakdep,
 
 static noreturn int modprobe_config(void)
 {
-       EXEC_MODPROBE("-c");
+       EXEC_TOOL(modprobe, "-c");
        exit(EXIT_FAILURE);
 }
 DEFINE_TEST(modprobe_config,
index e2f442409cc4c5980f47cf9e40a08958cac07f47..9b7a562029f18c9b756a10adbfc9e2acd299e818 100644 (file)
@@ -108,6 +108,10 @@ const struct test *test_find(const struct test *start, const struct test *stop,
 int test_spawn_prog(const char *prog, const char *const args[]);
 int test_run(const struct test *t);
 
+#define EXEC_TOOL(tool, ...)                 \
+       test_spawn_prog(TOOLS_DIR "/" #tool, \
+                       (const char *[]){ TOOLS_DIR "/" #tool, ##__VA_ARGS__, NULL })
+
 #define TS_EXPORT __attribute__((visibility("default")))
 
 #define _LOG(prefix, fmt, ...) printf("TESTSUITE: " prefix fmt, ##__VA_ARGS__)