diff options
author | Frantisek Sumsal <frantisek@sumsal.cz> | 2023-04-15 22:04:37 +0200 |
---|---|---|
committer | Frantisek Sumsal <frantisek@sumsal.cz> | 2023-04-16 09:21:13 +0200 |
commit | 192242c986e2462c4d2ec5b3ecd6f1ac02f9c0ad (patch) | |
tree | 71f6a1ba519190080f384a52529aa052cb2f2a83 /src/test/test-env-util.c | |
parent | f7f5657ece9d0afd5026edd835b12aa970f46547 (diff) | |
download | systemd-192242c986e2462c4d2ec5b3ecd6f1ac02f9c0ad.tar.gz |
test: add a simple test for getenv_path_list()
Diffstat (limited to 'src/test/test-env-util.c')
-rw-r--r-- | src/test/test-env-util.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c index 8f2293b6c0..0f58d2fed0 100644 --- a/src/test/test-env-util.c +++ b/src/test/test-env-util.c @@ -484,4 +484,39 @@ TEST(strv_env_name_is_valid) { assert_se(!strv_env_name_is_valid(STRV_MAKE("HOME", "USER", "SHELL", "USER"))); } +TEST(getenv_path_list) { + _cleanup_strv_free_ char **path_list = NULL; + + /* Empty paths */ + FOREACH_STRING(s, "", ":", ":::::", " : ::: :: :") { + assert_se(setenv("TEST_GETENV_PATH_LIST", s, 1) >= 0); + assert_se(getenv_path_list("TEST_GETENV_PATH_LIST", &path_list) == -EINVAL); + assert_se(!path_list); + } + + /* Invalid paths */ + FOREACH_STRING(s, ".", "..", "/../", "/", "/foo/bar/baz/../foo", "foo/bar/baz") { + assert_se(setenv("TEST_GETENV_PATH_LIST", s, 1) >= 0); + assert_se(getenv_path_list("TEST_GETENV_PATH_LIST", &path_list) == -EINVAL); + assert_se(!path_list); + } + + /* Valid paths mixed with invalid ones */ + assert_se(setenv("TEST_GETENV_PATH_LIST", "/foo:/bar/baz:/../:/hello", 1) >= 0); + assert_se(getenv_path_list("TEST_GETENV_PATH_LIST", &path_list) == -EINVAL); + assert_se(!path_list); + + /* Finally some valid paths */ + assert_se(setenv("TEST_GETENV_PATH_LIST", "/foo:/bar/baz:/hello/world:/path with spaces:/final", 1) >= 0); + assert_se(getenv_path_list("TEST_GETENV_PATH_LIST", &path_list) >= 0); + assert_se(streq(path_list[0], "/foo")); + assert_se(streq(path_list[1], "/bar/baz")); + assert_se(streq(path_list[2], "/hello/world")); + assert_se(streq(path_list[3], "/path with spaces")); + assert_se(streq(path_list[4], "/final")); + assert_se(path_list[5] == NULL); + + assert_se(unsetenv("TEST_GETENV_PATH_LIST") >= 0); +} + DEFINE_TEST_MAIN(LOG_DEBUG); |