[dm-devel] [PATCH 2/4] multipath-tools: devt test: avoid failure when run in containers

mwilck at suse.com mwilck at suse.com
Thu Feb 11 23:46:48 UTC 2021


From: Martin Wilck <mwilck at suse.com>

/sys/dev/block is usually unavailable containers, causing libudev
calls to fail. Skip the respective tests.

Signed-off-by: Martin Wilck <mwilck at suse.com>
---
 tests/devt.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tests/devt.c b/tests/devt.c
index 2b72851..02f2e8f 100644
--- a/tests/devt.c
+++ b/tests/devt.c
@@ -11,11 +11,25 @@
 #include <cmocka.h>
 #include <libudev.h>
 #include <sys/sysmacros.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include "util.h"
 #include "debug.h"
 
 #include "globals.c"
 
+static bool sys_dev_block_exists(void)
+{
+	int fd;
+	bool rc;
+
+	fd = open("/sys/dev/block", O_RDONLY|O_DIRECTORY);
+	rc = (fd != -1);
+	close(fd);
+	return rc;
+}
+
 static int get_one_devt(char *devt, size_t len)
 {
 	struct udev_enumerate *enm;
@@ -71,6 +85,8 @@ static void test_devt2devname_devt_good(void **state)
 {
 	char dummy[BLK_DEV_SIZE];
 
+	if (!sys_dev_block_exists())
+		skip();
 	assert_int_equal(devt2devname(dummy, sizeof(dummy), *state), 0);
 }
 
@@ -137,6 +153,8 @@ static void test_devt2devname_real(void **state)
 	struct udev_list_entry *first, *item;
 	unsigned int i = 0;
 
+	if (!sys_dev_block_exists())
+		skip();
 	enm = udev_enumerate_new(udev);
 	assert_non_null(enm);
 	r = udev_enumerate_add_match_subsystem(enm, "block");
-- 
2.29.2





More information about the dm-devel mailing list