]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-sd-hwdb.c
f18634cc34e32fc2251f2f2cd7db7f4d406056ba
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
5 #include "alloc-util.h"
6 #include "errno-util.h"
8 #include "hwdb-internal.h"
9 #include "nulstr-util.h"
12 TEST(failed_enumerate
) {
13 _cleanup_(sd_hwdb_unrefp
) sd_hwdb
*hwdb
= NULL
;
14 const char *key
, *value
;
16 assert_se(sd_hwdb_new(&hwdb
) == 0);
18 assert_se(sd_hwdb_seek(hwdb
, "no-such-modalias-should-exist") == 0);
20 assert_se(sd_hwdb_enumerate(hwdb
, &key
, &value
) == 0);
21 assert_se(sd_hwdb_enumerate(hwdb
, &key
, NULL
) == -EINVAL
);
22 assert_se(sd_hwdb_enumerate(hwdb
, NULL
, &value
) == -EINVAL
);
25 #define DELL_MODALIAS \
26 "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY:"
28 TEST(basic_enumerate
) {
29 _cleanup_(sd_hwdb_unrefp
) sd_hwdb
*hwdb
= NULL
;
30 const char *key
, *value
;
31 size_t len1
= 0, len2
= 0;
34 assert_se(sd_hwdb_new(&hwdb
) == 0);
36 assert_se(sd_hwdb_seek(hwdb
, DELL_MODALIAS
) == 0);
39 r
= sd_hwdb_enumerate(hwdb
, &key
, &value
);
40 assert_se(IN_SET(r
, 0, 1));
45 log_debug("A: \"%s\" → \"%s\"", key
, value
);
46 len1
+= strlen(key
) + strlen(value
);
49 SD_HWDB_FOREACH_PROPERTY(hwdb
, DELL_MODALIAS
, key
, value
) {
50 log_debug("B: \"%s\" → \"%s\"", key
, value
);
51 len2
+= strlen(key
) + strlen(value
);
54 assert_se(len1
== len2
);
57 TEST(sd_hwdb_new_from_path
) {
58 _cleanup_(sd_hwdb_unrefp
) sd_hwdb
*hwdb
= NULL
;
59 const char *hwdb_bin_path
= NULL
;
62 assert_se(sd_hwdb_new_from_path(NULL
, &hwdb
) == -EINVAL
);
63 assert_se(sd_hwdb_new_from_path("", &hwdb
) == -EINVAL
);
64 assert_se(sd_hwdb_new_from_path("/path/that/should/not/exist", &hwdb
) < 0);
66 NULSTR_FOREACH(hwdb_bin_path
, hwdb_bin_paths
) {
67 r
= sd_hwdb_new_from_path(hwdb_bin_path
, &hwdb
);
75 static int intro(void) {
76 _cleanup_(sd_hwdb_unrefp
) sd_hwdb
*hwdb
= NULL
;
79 r
= sd_hwdb_new(&hwdb
);
80 if (r
== -ENOENT
|| ERRNO_IS_PRIVILEGE(r
))
81 return log_tests_skipped_errno(r
, "cannot open hwdb");
86 DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG
, intro
);