]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
testsuite: add test for modinfo
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Wed, 25 Jan 2012 22:32:48 +0000 (20:32 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 26 Jan 2012 18:05:05 +0000 (16:05 -0200)
These ext4 modules were sent by Jon Master so we can test the result of
modinfo with modules generated for different architectures.

They are now added to testsuite and their output tested automatically.

Makefile.am
testsuite/.gitignore
testsuite/rootfs.tar.xz
testsuite/test-modinfo.c [new file with mode: 0644]
testsuite/testsuite.h

index 74d1b8c6978b1bac64cf325d6313ceb423fe96a1..a6f6bcc341850f31da0d7b7897fc152fa205c01c 100644 (file)
@@ -170,7 +170,8 @@ testsuite_libtestsuite_la_DEPENDENCIES = testsuite/uname.so \
                                         testsuite/rootfs
 testsuite_libtestsuite_la_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
 
-TESTSUITE = testsuite/test-init testsuite/test-testsuite testsuite/test-loaded
+TESTSUITE = testsuite/test-init testsuite/test-testsuite testsuite/test-loaded \
+           testsuite/test-modinfo
 check_PROGRAMS = $(TESTSUITE)
 TESTS = $(TESTSUITE)
 
@@ -180,6 +181,8 @@ testsuite_test_testsuite_LDADD = testsuite/libtestsuite.la
 testsuite_test_testsuite_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
 testsuite_test_loaded_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la
 testsuite_test_loaded_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
+testsuite_test_modinfo_LDADD = testsuite/libtestsuite.la
+testsuite_test_modinfo_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
 
 
 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
index 58cac86aa09188385283c79f79b23e2857d8163d..f2e833d578f6af7a67ae34f09e5f27283e1c2863 100644 (file)
@@ -6,3 +6,4 @@ rootfs/
 test-init
 test-loaded
 test-testsuite
+test-modinfo
index 091b45a2f0af4d382d6017127dc89bc452efd0df..7445e807fb27263d546be982b2ffaea55507346d 100644 (file)
Binary files a/testsuite/rootfs.tar.xz and b/testsuite/rootfs.tar.xz differ
diff --git a/testsuite/test-modinfo.c b/testsuite/test-modinfo.c
new file mode 100644 (file)
index 0000000..3e3b1a3
--- /dev/null
@@ -0,0 +1,67 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <string.h>
+
+#include "testsuite.h"
+
+static int modinfo_jonsmodules(const struct test *t)
+{
+       const char *progname = ABS_TOP_BUILDDIR "/tools/modinfo";
+       const char *const args[] = {
+               progname,
+               "/ext4-i686.ko", "/ext4-ppc64.ko", "/ext4-s390x.ko",
+               "/ext4-x86_64.ko",
+               NULL,
+       };
+
+       test_spawn_prog(progname, args);
+       exit(EXIT_FAILURE);
+}
+static const struct test smodinfo_jonsmodules = {
+       .name = "modinfo_jonsmodules",
+       .description = "check if output for modinfo is correct for i686, ppc64, s390x and x86_64",
+       .func = modinfo_jonsmodules,
+       .config = {
+               [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modinfo/",
+       },
+       .output = {
+               .stdout = TESTSUITE_ROOTFS "test-modinfo/correct.txt",
+       },
+};
+
+static const struct test *tests[] = {
+       &smodinfo_jonsmodules,
+       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);
+}
index b2831d4da540c959c7935ed0dabcd0c258274176..4259b21be21e9545ca76796181f87e271ba344cc 100644 (file)
@@ -32,7 +32,7 @@ struct test {
 
 const struct test *test_find(const struct test *tests[], const char *name);
 int test_init(int argc, char *const argv[], const struct test *tests[]);
-int test_spawn_prog(const char *prog, const char *args[]);
+int test_spawn_prog(const char *prog, const char *const args[]);
 
 int test_run(const struct test *t);