diff options
| author | Joel Klinghed <the_jk@yahoo.com> | 2017-02-28 21:50:44 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@yahoo.com> | 2017-02-28 21:50:44 +0100 |
| commit | c029d90d1975e124d237605f1edb2be16bd05b5d (patch) | |
| tree | 9df87ffb365354bdb74a969440b32c8304bdbcb7 /test/test-xdg.cc | |
Initial commit
Diffstat (limited to 'test/test-xdg.cc')
| -rw-r--r-- | test/test-xdg.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/test-xdg.cc b/test/test-xdg.cc new file mode 100644 index 0000000..54ff597 --- /dev/null +++ b/test/test-xdg.cc @@ -0,0 +1,60 @@ +// -*- mode: c++; c-basic-offset: 2; -*- + +#include "common.hh" +#include "test.hh" + +#include "paths.hh" +#include "xdg.hh" + +namespace { + +bool test_fallback() { + unsetenv("XDG_DATA_HOME"); + unsetenv("XDG_DATA_DIRS"); + std::string def = Paths::join(XDG::home(), ".local/share"); + ASSERT_EQ(def, XDG::data_home()); + auto dirs = XDG::data_dirs(); + ASSERT_EQ(3UL, dirs.size()); + ASSERT_EQ(def, dirs[0]); + ASSERT_EQ("/usr/local/share", dirs[1]); + ASSERT_EQ("/usr/share", dirs[2]); + return true; +} + +bool test_basic() { + setenv("XDG_DATA_HOME", "/home/user/share", 1); + setenv("XDG_DATA_DIRS", "/sw/share:/usr/share/enlightenment:/usr/share", 1); + ASSERT_EQ("/home/user/share", XDG::data_home()); + auto dirs = XDG::data_dirs(); + ASSERT_EQ(4UL, dirs.size()); + ASSERT_EQ("/home/user/share", dirs[0]); + ASSERT_EQ("/sw/share", dirs[1]); + ASSERT_EQ("/usr/share/enlightenment", dirs[2]); + ASSERT_EQ("/usr/share", dirs[3]); + return true; +} + +bool test_evil() { + unsetenv("XDG_DATA_HOME"); + setenv("XDG_DATA_DIRS", "::/tmp/share:/usr/share:/usr/share:/other:/usr/share:/tmp/share", 1); + std::string def = Paths::join(XDG::home(), ".local/share"); + ASSERT_EQ(def, XDG::data_home()); + auto dirs = XDG::data_dirs(); + ASSERT_EQ(4UL, dirs.size()); + ASSERT_EQ(def, dirs[0]); + ASSERT_EQ("/tmp/share", dirs[1]); + ASSERT_EQ("/usr/share", dirs[2]); + ASSERT_EQ("/other", dirs[3]); + return true; +} + +} // namespace + +int main(void) { + BEFORE; + RUN(test_fallback()); + RUN(test_basic()); + RUN(test_evil()); + AFTER; +} + |
