From 2e09fa89068fb191010e8f927dd20463c31d7bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 26 Mar 2020 17:40:33 +0100 Subject: [PATCH] sd-path: handle case of missing runtime dir in test Also document it in the man page. --- man/sd_path_lookup.xml | 8 ++++++++ src/test/test-sd-path.c | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/man/sd_path_lookup.xml b/man/sd_path_lookup.xml index 35a1109af3..68c6812ab1 100644 --- a/man/sd_path_lookup.xml +++ b/man/sd_path_lookup.xml @@ -172,6 +172,14 @@ Output argument is NULL. + + -ENXIO + + Query failed because of an undefined environment variable (e.g. for + SD_PATH_USER_RUNTIME when $XDG_RUNTIME_DIR is not + defined). + + -ENOMEM diff --git a/src/test/test-sd-path.c b/src/test/test-sd-path.c index 5888d3b9f9..9260db5ace 100644 --- a/src/test/test-sd-path.c +++ b/src/test/test-sd-path.c @@ -11,9 +11,13 @@ static void test_sd_path_lookup(void) { log_info("/* %s */", __func__); for (uint64_t i = 0; i < _SD_PATH_MAX; i++) { - _cleanup_free_ char *t, *s; + _cleanup_free_ char *t = NULL, *s = NULL; + int r; - assert_se(sd_path_lookup(i, NULL, &t) == 0); + r = sd_path_lookup(i, NULL, &t); + if (i == SD_PATH_USER_RUNTIME && r == -ENXIO) + continue; + assert_se(r == 0); assert_se(t); log_info("%02"PRIu64": \"%s\"", i, t); @@ -31,10 +35,14 @@ static void test_sd_path_lookup_strv(void) { log_info("/* %s */", __func__); for (uint64_t i = 0; i < _SD_PATH_MAX; i++) { - _cleanup_strv_free_ char **t, **s; + _cleanup_strv_free_ char **t = NULL, **s = NULL; char **item; + int r; - assert_se(sd_path_lookup_strv(i, NULL, &t) == 0); + r = sd_path_lookup_strv(i, NULL, &t); + if (i == SD_PATH_USER_RUNTIME && r == -ENXIO) + continue; + assert_se(r == 0); assert_se(t); log_info("%02"PRIu64":", i); STRV_FOREACH(item, t)