diff options
author | Lucas De Marchi <lucas.demarchi@profusion.mobi> | 2012-01-29 15:43:19 -0200 |
---|---|---|
committer | Lucas De Marchi <lucas.demarchi@profusion.mobi> | 2012-01-30 20:05:34 -0200 |
commit | a9474303a45612d4817f61ff0d6106294239997b (patch) | |
tree | acfe4f52897a4e5a5f1f3d5978c29842670d01c6 | |
parent | 9c7f3ad0a4fe4edb9cdef3db6f8d0d9be4483e3d (diff) | |
download | kmod-a9474303a45612d4817f61ff0d6106294239997b.tar.gz kmod-a9474303a45612d4817f61ff0d6106294239997b.zip |
testsuite: add test for kmod_module_new_from_name()
Check if module names are being correctly normalized.
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | testsuite/.gitignore | 1 | ||||
-rw-r--r-- | testsuite/rootfs.tar.xz | bin | 554516 -> 554084 bytes | |||
-rw-r--r-- | testsuite/test-new-module.c | 106 |
4 files changed, 110 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index 5f22acf..69ab986 100644 --- a/Makefile.am +++ b/Makefile.am @@ -171,7 +171,7 @@ testsuite_libtestsuite_la_DEPENDENCIES = testsuite/rootfs testsuite_libtestsuite_la_CPPFLAGS = $(TESTSUITE_CPPFLAGS) TESTSUITE = testsuite/test-init testsuite/test-testsuite testsuite/test-loaded \ - testsuite/test-modinfo testsuite/test-alias + testsuite/test-modinfo testsuite/test-alias testsuite/test-new-module check_PROGRAMS = $(TESTSUITE) TESTS = $(TESTSUITE) @@ -185,7 +185,8 @@ testsuite_test_modinfo_LDADD = testsuite/libtestsuite.la testsuite_test_modinfo_CPPFLAGS = $(TESTSUITE_CPPFLAGS) testsuite_test_alias_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la testsuite_test_alias_CPPFLAGS = $(TESTSUITE_CPPFLAGS) - +testsuite_test_new_module_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la +testsuite_test_new_module_CPPFLAGS = $(TESTSUITE_CPPFLAGS) DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc diff --git a/testsuite/.gitignore b/testsuite/.gitignore index fb776cd..ed2f058 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -8,3 +8,4 @@ test-loaded test-testsuite test-modinfo test-alias +test-new-module diff --git a/testsuite/rootfs.tar.xz b/testsuite/rootfs.tar.xz Binary files differindex dbba188..a37ba95 100644 --- a/testsuite/rootfs.tar.xz +++ b/testsuite/rootfs.tar.xz diff --git a/testsuite/test-new-module.c b/testsuite/test-new-module.c new file mode 100644 index 0000000..81ee8af --- /dev/null +++ b/testsuite/test-new-module.c @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2012 ProFUSION embedded systems + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <stddef.h> +#include <errno.h> +#include <unistd.h> +#include <inttypes.h> +#include <string.h> +#include <libkmod.h> + +#include "testsuite.h" + +static int from_name(const struct test *t) +{ + static const char *modnames[] = { + "ext4", + "balbalbalbbalbalbalbalbalbalbal", + "snd-hda-intel", + "snd-timer", + "iTCO_wdt", + NULL, + }; + const char **p; + struct kmod_ctx *ctx; + struct kmod_module *mod; + const char *null_config = NULL; + int err; + + ctx = kmod_new(NULL, &null_config); + if (ctx == NULL) + exit(EXIT_FAILURE); + + for (p = modnames; p != NULL; p++) { + err = kmod_module_new_from_name(ctx, *p, &mod); + if (err < 0) + exit(EXIT_SUCCESS); + + printf("modname: %s\n", kmod_module_get_name(mod)); + kmod_module_unref(mod); + } + + kmod_unref(ctx); + + return EXIT_SUCCESS; +} +static const struct test sfrom_name = { + .name = "sfrom_name", + .description = "check if module names are parsed correctly", + .func = from_name, + .config = { + [TC_ROOTFS] = TESTSUITE_ROOTFS "test-new-module/from_name/", + }, + .need_spawn = true, + .output = { + .stdout = TESTSUITE_ROOTFS "test-new-module/from_name/correct.txt", + }, +}; + +static const struct test *tests[] = { + &sfrom_name, + 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); +} |