]> git.ipfire.org Git - thirdparty/kmod.git/blob - testsuite/test-new-module.c
testsuite: depmod: check netsted loops reporting
[thirdparty/kmod.git] / testsuite / test-new-module.c
1 /*
2 * Copyright (C) 2012-2013 ProFUSION embedded systems
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #include <errno.h>
19 #include <inttypes.h>
20 #include <stddef.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include <unistd.h>
25
26 #include <libkmod/libkmod.h>
27
28 #include "testsuite.h"
29
30 static int from_name(const struct test *t)
31 {
32 static const char *modnames[] = {
33 "ext4",
34 "balbalbalbbalbalbalbalbalbalbal",
35 "snd-hda-intel",
36 "snd-timer",
37 "iTCO_wdt",
38 NULL,
39 };
40 const char **p;
41 struct kmod_ctx *ctx;
42 struct kmod_module *mod;
43 const char *null_config = NULL;
44 int err;
45
46 ctx = kmod_new(NULL, &null_config);
47 if (ctx == NULL)
48 exit(EXIT_FAILURE);
49
50 for (p = modnames; p != NULL; p++) {
51 err = kmod_module_new_from_name(ctx, *p, &mod);
52 if (err < 0)
53 exit(EXIT_SUCCESS);
54
55 printf("modname: %s\n", kmod_module_get_name(mod));
56 kmod_module_unref(mod);
57 }
58
59 kmod_unref(ctx);
60
61 return EXIT_SUCCESS;
62 }
63 DEFINE_TEST(from_name,
64 .description = "check if module names are parsed correctly",
65 .config = {
66 [TC_ROOTFS] = TESTSUITE_ROOTFS "test-new-module/from_name/",
67 },
68 .need_spawn = true,
69 .output = {
70 .out = TESTSUITE_ROOTFS "test-new-module/from_name/correct.txt",
71 });
72
73 static int from_alias(const struct test *t)
74 {
75 static const char *modnames[] = {
76 "ext4.*",
77 NULL,
78 };
79 const char **p;
80 struct kmod_ctx *ctx;
81 int err;
82
83 ctx = kmod_new(NULL, NULL);
84 if (ctx == NULL)
85 exit(EXIT_FAILURE);
86
87 for (p = modnames; p != NULL; p++) {
88 struct kmod_list *l, *list = NULL;
89
90 err = kmod_module_new_from_lookup(ctx, *p, &list);
91 if (err < 0)
92 exit(EXIT_SUCCESS);
93
94 kmod_list_foreach(l, list) {
95 struct kmod_module *m;
96 m = kmod_module_get_module(l);
97
98 printf("modname: %s\n", kmod_module_get_name(m));
99 kmod_module_unref(m);
100 }
101 kmod_module_unref_list(list);
102 }
103
104 kmod_unref(ctx);
105
106 return EXIT_SUCCESS;
107 }
108 DEFINE_TEST(from_alias,
109 .description = "check if aliases are parsed correctly",
110 .config = {
111 [TC_ROOTFS] = TESTSUITE_ROOTFS "test-new-module/from_alias/",
112 },
113 .need_spawn = true,
114 .output = {
115 .out = TESTSUITE_ROOTFS "test-new-module/from_alias/correct.txt",
116 });
117
118 TESTSUITE_MAIN();