]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - testsuite/test-testsuite.c
Move static keyword to DEFINE_TEST macro
[thirdparty/kmod.git] / testsuite / test-testsuite.c
index 84f0e07af267d6b747035b3728ec0d7b246d8b90..e2b94464e914ce03b9d62a64524fa47fcf39e9ce 100644 (file)
@@ -1,19 +1,39 @@
+/*
+ * Copyright (C) 2012-2013  ProFUSION embedded systems
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <dirent.h>
+#include <errno.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <stddef.h>
 #include <string.h>
-#include <errno.h>
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/utsname.h>
+
 #include <libkmod.h>
 
 #include "testsuite.h"
 
 
 #define TEST_UNAME "4.0.20-kmod"
-static int testsuite_uname(const struct test *t)
+static noreturn int testsuite_uname(const struct test *t)
 {
        struct utsname u;
        int err = uname(&u);
@@ -30,15 +50,12 @@ static int testsuite_uname(const struct test *t)
 
        exit(EXIT_SUCCESS);
 }
-static const struct test stestsuite_uname = {
-       .name = "testsuite_uname",
+DEFINE_TEST(testsuite_uname,
        .description = "test if trap to uname() works",
-       .func = testsuite_uname,
        .config = {
                [TC_UNAME_R] = TEST_UNAME,
        },
-       .need_spawn = true,
-};
+       .need_spawn = true);
 
 static int testsuite_rootfs_fopen(const struct test *t)
 {
@@ -59,15 +76,12 @@ static int testsuite_rootfs_fopen(const struct test *t)
 
        return EXIT_SUCCESS;
 }
-static const struct test stestsuite_rootfs_fopen = {
-       .name = "testsuite_rootfs_fopen",
+DEFINE_TEST(testsuite_rootfs_fopen,
        .description = "test if rootfs works - fopen()",
-       .func = testsuite_rootfs_fopen,
        .config = {
                [TC_ROOTFS] = TESTSUITE_ROOTFS "test-rootfs/",
        },
-       .need_spawn = true,
-};
+       .need_spawn = true);
 
 static int testsuite_rootfs_open(const struct test *t)
 {
@@ -95,15 +109,12 @@ static int testsuite_rootfs_open(const struct test *t)
 
        return EXIT_SUCCESS;
 }
-static const struct test stestsuite_rootfs_open = {
-       .name = "testsuite_rootfs_open",
+DEFINE_TEST(testsuite_rootfs_open,
        .description = "test if rootfs works - open()",
-       .func = testsuite_rootfs_open,
        .config = {
                [TC_ROOTFS] = TESTSUITE_ROOTFS "test-rootfs/",
        },
-       .need_spawn = true,
-};
+       .need_spawn = true);
 
 static int testsuite_rootfs_stat_access(const struct test *t)
 {
@@ -121,48 +132,40 @@ static int testsuite_rootfs_stat_access(const struct test *t)
 
        return EXIT_SUCCESS;
 }
-static const struct test stestsuite_rootfs_stat_access = {
-       .name = "testsuite_rootfs_stat_access",
+DEFINE_TEST(testsuite_rootfs_stat_access,
        .description = "test if rootfs works - stat() and access()",
-       .func = testsuite_rootfs_stat_access,
        .config = {
                [TC_ROOTFS] = TESTSUITE_ROOTFS "test-rootfs/",
        },
-       .need_spawn = true,
-};
+       .need_spawn = true);
+
+static int testsuite_rootfs_opendir(const struct test *t)
+{
+       DIR *d;
+
+       d = opendir("/testdir");
+       if (d == NULL) {
+               ERR("opendir failed: %m\n");
+               return EXIT_FAILURE;
+       }
+
+       closedir(d);
+       return EXIT_SUCCESS;
+}
+DEFINE_TEST(testsuite_rootfs_opendir,
+       .description = "test if rootfs works - opendir()",
+       .config = {
+               [TC_ROOTFS] = TESTSUITE_ROOTFS "test-rootfs/",
+       },
+       .need_spawn = true);
 
 static const struct test *tests[] = {
        &stestsuite_uname,
        &stestsuite_rootfs_fopen,
        &stestsuite_rootfs_open,
        &stestsuite_rootfs_stat_access,
+       &stestsuite_rootfs_opendir,
        NULL,
 };
 
-int main(int argc, char *argv[])
-{
-       const struct test *t;
-       int arg;
-       size_t i;
-
-       arg = test_init(argc, argv, tests);
-       if (arg == 0)
-               return 0;
-
-       if (arg < argc) {
-               t = test_find(tests, argv[arg]);
-               if (t == NULL) {
-                       fprintf(stderr, "could not find test %s\n", argv[arg]);
-                       exit(EXIT_FAILURE);
-               }
-
-               return test_run(t);
-       }
-
-       for (i = 0; tests[i] != NULL; i++) {
-               if (test_run(tests[i]) != 0)
-                       exit(EXIT_FAILURE);
-       }
-
-       exit(EXIT_SUCCESS);
-}
+TESTSUITE_MAIN(tests);