From c029d90d1975e124d237605f1edb2be16bd05b5d Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Tue, 28 Feb 2017 21:50:44 +0100 Subject: Initial commit --- test/test-xdg.cc | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 test/test-xdg.cc (limited to 'test/test-xdg.cc') 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; +} + -- cgit v1.2.3-70-g09d2