]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-sd-hwdb.c
test: initialize hwdb so that the test won't try to free memory it has never allocated
[thirdparty/systemd.git] / src / test / test-sd-hwdb.c
CommitLineData
ca7a9afc
ZJS
1#include "sd-hwdb.h"
2
3#include "alloc-util.h"
4#include "errno.h"
5#include "tests.h"
6
4dd73b88 7static int test_failed_enumerate(void) {
86f4edef 8 _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL;
ca7a9afc 9 const char *key, *value;
4dd73b88 10 int r;
ca7a9afc
ZJS
11
12 log_info("/* %s */", __func__);
13
4dd73b88
ZJS
14 r = sd_hwdb_new(&hwdb);
15 if (r == -ENOENT)
16 return r;
17 assert_se(r == 0);
ca7a9afc
ZJS
18
19 assert_se(sd_hwdb_seek(hwdb, "no-such-modalias-should-exist") == 0);
20
21 assert_se(sd_hwdb_enumerate(hwdb, &key, &value) == 0);
22 assert_se(sd_hwdb_enumerate(hwdb, &key, NULL) == -EINVAL);
23 assert_se(sd_hwdb_enumerate(hwdb, NULL, &value) == -EINVAL);
4dd73b88
ZJS
24
25 return 0;
ca7a9afc
ZJS
26}
27
28#define DELL_MODALIAS \
29 "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY"
30
31static void test_basic_enumerate(void) {
86f4edef 32 _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL;
ca7a9afc
ZJS
33 const char *key, *value;
34 size_t len1 = 0, len2 = 0;
35 int r;
36
37 log_info("/* %s */", __func__);
38
39 assert_se(sd_hwdb_new(&hwdb) == 0);
40
41 assert_se(sd_hwdb_seek(hwdb, DELL_MODALIAS) == 0);
42
43 for (;;) {
44 r = sd_hwdb_enumerate(hwdb, &key, &value);
45 assert(IN_SET(r, 0, 1));
46 if (r == 0)
47 break;
48 assert(key);
49 assert(value);
50 log_debug("A: \"%s\" → \"%s\"", key, value);
51 len1 += strlen(key) + strlen(value);
52 }
53
54 SD_HWDB_FOREACH_PROPERTY(hwdb, DELL_MODALIAS, key, value) {
55 log_debug("B: \"%s\" → \"%s\"", key, value);
56 len2 += strlen(key) + strlen(value);
57 }
58
59 assert_se(len1 == len2);
60}
61
62int main(int argc, char *argv[]) {
4dd73b88
ZJS
63 int r;
64
ca7a9afc
ZJS
65 test_setup_logging(LOG_DEBUG);
66
4dd73b88
ZJS
67 r = test_failed_enumerate();
68 if (r < 0)
69 return log_tests_skipped_errno(r, "cannot open hwdb");
70
ca7a9afc
ZJS
71 test_basic_enumerate();
72
73 return 0;
74}