#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]); } }