From 4f6e76493fb74f5385d5a14dce3a01c9901802ed Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Tue, 7 Oct 2025 19:58:28 +0200 Subject: paths: New module Path utilities (doh) --- test/paths.cc | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/paths.cc (limited to 'test/paths.cc') diff --git a/test/paths.cc b/test/paths.cc new file mode 100644 index 0000000..b07e459 --- /dev/null +++ b/test/paths.cc @@ -0,0 +1,63 @@ +#include "paths.hh" + +#include "testenv.hh" + +#include + +namespace { + +class PathsTest : public TestEnv {}; + +} // namespace + +TEST_F(PathsTest, home) { + setenv("HOME", "foo-bar"); + EXPECT_EQ("foo-bar", paths::home()); + unsetenv("HOME"); + EXPECT_NE("foo-bar", paths::home()); + setenv("HOME", ""); + EXPECT_NE("", paths::home()); +} + +TEST_F(PathsTest, config_dirs) { + setenv("XDG_CONFIG_HOME", "foo"); + setenv("XDG_CONFIG_DIRS", "bar:fum::foo"); + auto dirs = paths::config_dirs(); + EXPECT_EQ(3, dirs.size()); + if (dirs.size() >= 3) { + EXPECT_EQ("foo", dirs[0]); + EXPECT_EQ("bar", dirs[1]); + EXPECT_EQ("fum", dirs[2]); + } + setenv("HOME", "home"); + unsetenv("XDG_CONFIG_HOME"); + unsetenv("XDG_CONFIG_DIRS"); + dirs = paths::config_dirs(); + EXPECT_EQ(2, dirs.size()); + if (dirs.size() >= 2) { + EXPECT_EQ("home/.config", dirs[0]); + EXPECT_EQ("/etc/xdg", dirs[1]); + } +} + +TEST_F(PathsTest, data_dirs) { + setenv("XDG_DATA_HOME", "foo"); + setenv("XDG_DATA_DIRS", "bar:fum::foo"); + auto dirs = paths::data_dirs(); + EXPECT_EQ(3, dirs.size()); + if (dirs.size() >= 3) { + EXPECT_EQ("foo", dirs[0]); + EXPECT_EQ("bar", dirs[1]); + EXPECT_EQ("fum", dirs[2]); + } + setenv("HOME", "home"); + unsetenv("XDG_DATA_HOME"); + unsetenv("XDG_DATA_DIRS"); + dirs = paths::data_dirs(); + EXPECT_EQ(3, dirs.size()); + if (dirs.size() >= 3) { + EXPECT_EQ("home/.local/share", dirs[0]); + EXPECT_EQ("/usr/local/share/", dirs[1]); + EXPECT_EQ("/usr/share/", dirs[2]); + } +} -- cgit v1.2.3-70-g09d2