]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-sd-device: device ID requires subsystem
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 4 Apr 2022 09:25:49 +0000 (18:25 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 5 Apr 2022 05:29:49 +0000 (14:29 +0900)
src/libsystemd/sd-device/test-sd-device.c

index f47df7974327ebc7f0f710adfc877bcbe729a670..222c5b9dbc988584ffebd6c47993afb15b333894 100644 (file)
@@ -17,7 +17,7 @@
 
 static void test_sd_device_one(sd_device *d) {
         _cleanup_(sd_device_unrefp) sd_device *dev = NULL;
-        const char *syspath, *sysname, *subsystem = NULL, *id, *devname, *val;
+        const char *syspath, *sysname, *subsystem = NULL, *devname, *val;
         bool is_block = false;
         dev_t devnum;
         usec_t usec;
@@ -41,7 +41,7 @@ static void test_sd_device_one(sd_device *d) {
         assert_se(sd_device_get_sysname(d, &sysname) >= 0);
         r = sd_device_get_subsystem(d, &subsystem);
         if (r >= 0) {
-                const char *name;
+                const char *name, *id;
 
                 if (streq(subsystem, "drivers"))
                         name = strjoina(d->driver_subsystem, ":", sysname);
@@ -51,6 +51,24 @@ static void test_sd_device_one(sd_device *d) {
                 assert_se(sd_device_get_syspath(dev, &val) >= 0);
                 assert_se(streq(syspath, val));
                 dev = sd_device_unref(dev);
+
+                /* The device ID depends on subsystem. */
+                assert_se(device_get_device_id(d, &id) >= 0);
+                assert_se(sd_device_new_from_device_id(&dev, id) >= 0);
+                assert_se(sd_device_get_syspath(dev, &val) >= 0);
+                assert_se(streq(syspath, val));
+                dev = sd_device_unref(dev);
+
+                /* These require udev database, and reading database requires device ID. */
+                r = sd_device_get_is_initialized(d);
+                if (r > 0) {
+                        r = sd_device_get_usec_since_initialized(d, &usec);
+                        assert_se((r >= 0 && usec > 0) || r == -ENODATA);
+                } else
+                        assert(r == 0);
+
+                r = sd_device_get_property_value(d, "ID_NET_DRIVER", &val);
+                assert_se(r >= 0 || r == -ENOENT);
         } else
                 assert_se(r == -ENOENT);
 
@@ -131,23 +149,8 @@ static void test_sd_device_one(sd_device *d) {
         r = sd_device_get_sysnum(d, &val);
         assert_se(r >= 0 || r == -ENOENT);
 
-        r = sd_device_get_is_initialized(d);
-        if (r > 0) {
-                r = sd_device_get_usec_since_initialized(d, &usec);
-                assert_se((r >= 0 && usec > 0) || r == -ENODATA);
-        } else
-                assert(r == 0);
-
         r = sd_device_get_sysattr_value(d, "name_assign_type", &val);
         assert_se(r >= 0 || ERRNO_IS_PRIVILEGE(r) || IN_SET(r, -ENOENT, -EINVAL));
-
-        r = sd_device_get_property_value(d, "ID_NET_DRIVER", &val);
-        assert_se(r >= 0 || r == -ENOENT);
-
-        assert_se(device_get_device_id(d, &id) >= 0);
-        assert_se(sd_device_new_from_device_id(&dev, id) >= 0);
-        assert_se(sd_device_get_syspath(dev, &val) >= 0);
-        assert_se(streq(syspath, val));
 }
 
 TEST(sd_device_enumerator_devices) {