summaryrefslogtreecommitdiff
path: root/test/paths.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/paths.cc')
-rw-r--r--test/paths.cc63
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]);
+ }
+}