diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c index 7bc61354067..3bd3761f3be 100644 --- a/src/libsystemd/sd-device/test-sd-device.c +++ b/src/libsystemd/sd-device/test-sd-device.c @@ -182,6 +182,10 @@ TEST(sd_device_enumerator_devices) { assert_se(sd_device_enumerator_new(&e) >= 0); assert_se(sd_device_enumerator_allow_uninitialized(e) >= 0); + /* On some CI environments, it seems some loop block devices and corresponding bdi devices sometimes + * disappear during running this test. Let's exclude them here for stability. */ + assert_se(sd_device_enumerator_add_match_subsystem(e, "bdi", false) >= 0); + assert_se(sd_device_enumerator_add_nomatch_sysname(e, "loop*") >= 0); FOREACH_DEVICE(e, d) test_sd_device_one(d); } @@ -208,6 +212,8 @@ static void test_sd_device_enumerator_filter_subsystem_one( assert_se(sd_device_enumerator_new(&e) >= 0); assert_se(sd_device_enumerator_add_match_subsystem(e, subsystem, true) >= 0); + if (streq(subsystem, "block")) + assert_se(sd_device_enumerator_add_nomatch_sysname(e, "loop*") >= 0); FOREACH_DEVICE(e, d) { const char *syspath; @@ -250,6 +256,9 @@ TEST(sd_device_enumerator_filter_subsystem) { assert_se(subsystems = hashmap_new(&string_hash_ops)); assert_se(sd_device_enumerator_new(&e) >= 0); + /* See comments in TEST(sd_device_enumerator_devices). */ + assert_se(sd_device_enumerator_add_match_subsystem(e, "bdi", false) >= 0); + assert_se(sd_device_enumerator_add_nomatch_sysname(e, "loop*") >= 0); FOREACH_DEVICE(e, d) { const char *syspath, *subsystem;