diff options
Diffstat (limited to 'test/paths.cc')
| -rw-r--r-- | test/paths.cc | 63 |
1 files changed, 63 insertions, 0 deletions
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 <gtest/gtest.h> + +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]); + } +} |
